对称和非对称加密算法及单向哈希算法
0 条评论网络加密技术算法:
计算机网络加密技术应用非常普遍,且多而复杂,今天用最简单的话来说清楚加密算法的原理。加密算法可以分为三类:
- 对称加密算法
- 非对称加密算法
- 单向哈希算法
对称加密算法:
原理: 加密和解密使用同一个密钥!
特性:
- 加密算法公开,密钥不公开
- 加密、解密使用同一个密钥,效率高,速度快
- 将原始数据分割成固定大小的块,逐个进行加密
缺陷:
- 密钥过多,比如一个发送者对应多个接受者,就需要多个密钥, 这时密钥分发和密钥管理就会变得非常复杂
- 数据来源无法确认
常见对称加密算法:
- DES:Data Encryption Standard,56bits , 56位加密就是把数据以56位为单位切割,然后分别对每个数据小块加密
- 3DES:加密三次
- AES:Advanced (128, 192, 256bits),高级加密标准,可以选择密钥长度,有128、192、256 bits等等,位数越长,加密效果越好。比如无线路由器就是使用的AES加密
- Blowfish,Twofish :商业解决方案,需要花费成本
- IDEA,RC6,CAST5
常见使用场景:
- WIFI密码就是使用的对称加密技术

非对称加密算法:
原理: 密钥成对出现,通讯双方各有一对密钥,一对密钥包含一把公钥和一把对应的私钥!
- 公钥(public key)公开给所有人,主要给别人加密使用
- 私钥(private key)自己留存,必须保证其私密性,用于自已加密签名
- 用公钥加密数据,只能使用与之配对的私钥解密; 用私钥加密数据,只能使用与之配对的公钥解密;
特性:
- “公钥加密,私钥解密”可以加密数据,实现数据安全!
- “私钥加密,公钥解密”可以确认对方的身份,因为私钥不公开,只有自己才有!这种特性也被称之为 “数字签名”
缺陷: 密钥长,算法复杂;加密解密效率低下
常见算法:
- RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的,可实现加密和数字签名。RSA用的非常普及, RSA既可以做数字签名(来源确认),也能做数据加密
- DSA(Digital Signature Algorithm):数字签名算法,是一种标准的 DSS(数字签名标准)。DSA只能做数字签名(来源确认),不能做数据加密
- ECC(Elliptic Curves Cryptography):椭圆曲线密码编码学,比RSA加密算法使用更小的密钥,提供相当的或更高等级的安全
常见使用场景:
- Github配置ssh-key,实现免用户名密码登录

对称加密算法和非对称加密算法对比:
- 对称加密算法效率高,适合加密大数据!
- 非对称加密算法效率太低,适合加密小数据!
引用网上现成的实验结论:
使用DES加密1G数据,加密5min,解密10min
使用RSA加密1G数据,加密1min,解密64h
单向哈希(散列)算法:
原理: 将任意数据通过哈希(散列)算法缩小成一段固定大小的字符串,这段固定长度的字符串称称为digest,即摘要,也称为"指纹"!
特性:
- 任意长度输入,固定长度输出
- 若修改数据,指纹也会改变,且有雪崩效应,数据的一点微小改变,生成的指纹值变化非常大。
- 无法从指纹中重新生成数据,即不要逆,具有单向性
常见算法:
- md5: 128bits ,已被破解
- sha1: 160bits,已被破解
- sha224
- sha256
- sha384
- sha512
作用: 数据传输前和传输后的摘要值如果一样,说明数据没有被篡改或破坏,HASH的关键作用就是确认数据的完整性!
常见使用场景:
- linux登录密码
[root@localhost ~]# cat /etc/shadow
root:$6$pY2mYzp/$QbcKf3sW1PuP/TDrCJlDpSkb2KXgdKXcTX0bBYAG9QlHYbGMrB1qvFGd9l9bJdLclSZ/SMB4K6Dsp0q60RidI1:19339::::::
- 镜像源网站会提供会提供系统光盘的哈希值

# 镜像源网站使用的 sha256 算法,如果在本地算出来的hash值和镜像源网站一样,说明数据在传输过程中没有被篡改!
[aaron@localhost ~]#sha256sum /dev/sr0
e33d7b1ea7a9e2f38c8f693215dd85254c3a4fe446f93f563279715b68d07987 /dev/sr0
三种加密技术总结:
- 对称加密算法解决的是数据加密;
- 非对称加密算法主要解决的是数据来源的确认;
- 单向哈希算法解决的是数据完整性;
文中的“公钥”、“ 私钥”、“指纹(摘要)”、“数字签名”概念非要重要,这也是数字证书的基础知识,理解了这些概念,才能理解数字证书的原理!
在实际使用中,这三类加密技术各自有自己的特点,不会单一使用,往往会组合使用!
