1.为什么要进行数据加密?

若不对数据加密,难免在进程间通信时,会有第三者窃听甚至修改通信数据;因此为了更好的确保数据的机密性,完整性,需要对数据加密。

2.加密方案组成

加密算法及协议

加密密钥

3.常用的数据加密算法

1.对称加密算法:

特点:加密密钥和解密密钥相同(秘钥长度一般为56bits,128bits, 192bits, 256bits)

主流的加密算法

DES

3DES

AES

TWOFISH

....

其他特性:

1.对于一对通信主机,需要保证密钥的唯一性

2. 会对原始的数据分割成固定块大小逐个加密

3.加密和解密的速度非常快(加密密钥的长度比较短)

缺陷:

1.因为需要保证密钥的唯一性,当一台主机要和多台主机通信时,需要拥有大量的密钥

2.密钥需要一台主机发送给另一台主机,途中很难保证密钥安全,所以密钥分发困难

2.非对称的加密算法(也叫公钥加密算法)

特点:密钥不同;由私钥和用私钥抽取生成的公钥组成

私钥:由特定的工具生成,仅由使用者自己保存,需要保证一定的私密性(512bits, 1024bits, 2048bits, 4096bits, 8192bits, 16384bits)

公钥:由特定的工具,从私钥中抽取,抽取的其中不重要的一部分,可以公开

主流的加密算法

RSA:加密,数字签名;

DSA:数字签名算法;

Elgamal:

其他特性:

1.在加密和解密的时候,私钥加密的数据只能其对应的公钥才能解开,公钥加密的数据只能对应的私钥才能解开

2.私钥长度比较长,加密后的数据更安全

缺陷:

因为秘钥太长,加密数据会消耗较多的系统资源;所以很少用来加密大量数据

公钥加密的用途

1.密钥交换:发送方用接收方的公钥去加密自己的密钥,接收方收到后可以用自己的私钥解密

2.数字签名:用自己的私钥加密数据,然后将公钥发送给接收方,让接收方解密

单向加密算法

只能加密不能解密,又称为"数据指纹提取";数据指纹即数据的特征码;

主流的单向加密算法:

md5:Message Digest version 5,信息摘要算法第5版;

128bits定长输出;

sha系列:Security Hash Algorithm,安全的哈希算法;

sha-1:160bits定长输出;

sha224:224bits定长输出;

sha256:256bits

sha384:384bits

sha512:512bits

特性:

1.定长输出:无论加密的明文有多长,输出都是定长的

2.雪崩效应:若明文有一丝变化,其加密后内容,差别很大

4.如何在通信时加密数据,使通信更为安全?

1.发送方先用单向加密抽出数据中的一部分加密,得到结果称为特征码;同时用自己的私钥加密特征码

2.发送方用对称加密去加密数据;同时用接收方的公钥加密对称密钥

3.接收方用发送方的公钥解密特征码,认证发送方

4.接收方用自己的私钥解密对称密钥,随后用解密出来的密钥解密数据

5.收到数据后,再用单向加密获得特征码,与之前得到的特征码按位对比,确保数据信息的完整性

转载于:https://blog.51cto.com/wangchaode/2095140

系统安全之数据加密解密相关推荐

  1. 数据结构(哈夫曼树+KMP)之 数据加密+解密

    数据结构(哈夫曼树+KMP)之 数据加密+解密 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> #define N 1 ...

  2. java数据加密解密代码_java使用RSA加密方式实现数据加密解密的代码

    RSA的应用 RSA是一种非对称加密算法.现在,很多登陆表单的密码的都采用RSA加密,例如京东中的登陆使用公钥对密码进行加密 java使用RSA加密方式实现数据加密解密,需要首先产生私钥和公钥 测试代 ...

  3. java使用RSA加密方式实现数据加密解密

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用RSA加密方式实现数据加密解密,需要首先产生私钥和公钥 测试代码 public static void main(String arg ...

  4. RSA数据加密解密(各种语言)

    RSA数据加密解密文档 增强数据传输与本地日志的数据安全 数据加密方式 使用rsa加密算法,客户端公钥加密,服务端私钥解密 (若单次传输数据量过大,之后可引入aes rsa只加密iv部分) 数据加密步 ...

  5. Python实现数据加密-解密

    Python实现数据加密-解密 运行环境: OS:macOS Monterey Version 12.3.1(英文版) IDE:PyCharm 2020.1 1 . PyCryptodome库安装 ​ ...

  6. 一种简单的,适合单片机的,数据加密解密方法,仅需要调用两个函数即可完成数据的加密解密

    一种简单的,适合单片机的,数据加密解密方法,仅需要调用两个函数即可完成数据的加密解密 本人原创,源码可移步:https://gitee.com/demyli/easy-encrypt.git /*** ...

  7. 系统安全性之数据加密技术

    数据加密的基本概念 数据加密技术的发展 直至进入20世纪60年代,由于电子技术和计算机技术的迅速发展,以及结构代数.可计算性理论学科研究成果的出现,才使密码学的研究走出困境而进入了一个新的发展时期:特 ...

  8. MyBatis 一个简单配置搞定数据加密解密!

    欢迎关注方志朋的博客,回复"666"获面试宝典 前言:介绍一个简单的MyBatis加解密方式,日常学习工作中提及这种方法的比较少,所以拿来说说,如果已经知道这种方法的忽略本文! 一 ...

  9. 扔掉工具类,Mybatis一个简单配置搞定数据加密解密!

    今日推荐 推荐 20 款 IDEA 主题!开源困境:Log4j2 维护者发声:没有工资,还要挨骂!!RedisJson 横空出世,性能碾压ES和Mongo!还在发愁写API文档?推荐一款阿里腾讯都在用 ...

  10. Android数据加密解密

    最近项目在维护过程中,估计这一周都会没有什么事情做了.于是开始打量自己做完的这个项目,项目在展示方面乏善可陈,然后仔细的想了想,这个项目的亮点无非就在数据加密和解密这一块了.因为是银行的项目,所以对数 ...

最新文章

  1. 4、SpringBoot 配置和使用定时任务
  2. 学习记录2-Python中的注册器模块
  3. js define函数_聊聊JS模块化发展历程
  4. Java File类File [] listFiles()方法(带示例)
  5. 86-Spark2.2源码:RDD中WithScope是什么?
  6. 处理方块之间的连接线
  7. 通过朋友间推广APP,根本不可行
  8. 问题求解RK3288调ALC5640芯片遇到的问题,前部分硬件问题,后部分如见驱动问题。
  9. JavaScript实现百度坐标系、火星坐标系、WGS84坐标系的互相转换
  10. win10 游戏等应用打开时闪退解决方案
  11. 【Spring源码三千问】Advice、Advisor、Advised都是什么接口?
  12. 【无机纳米材料科研制图——Visio 0309】使用任意多边形工具描边出小鼠简图
  13. 前端知识大全 - 收藏集 - 掘金
  14. 基于Djiango的学生管理系统(含源代码)
  15. android系统优化启动时间(Google官方推荐)
  16. Latex 命令速查
  17. 《纳瓦尔宝典》笔记二——停止出卖时间后,如何才能有收入
  18. 郑大计算机应用基础试题及答案,郑州大学远程教育计算机应用基础在线测试题库.doc...
  19. tomcat集群部署
  20. php任务进程中的配置文件_PHP进程管理器php-fpm配置说明

热门文章

  1. 用原生js写一个多动症的简历
  2. 盘点前 10 名的免费跨浏览器测试工具
  3. iOS web 、原生 js 交互:方法及原理
  4. 区块链供应链金融应用场景解决方案
  5. Python接口自动化实战(第二阶段)- unittest框架
  6. Laravel Request 和 Laravel Input 常用操作方法
  7. 四则运算 python
  8. PHP常用设计模式汇总
  9. Handsontable 自定义菜单 自定义命令存放位置
  10. HDU1166树状数组