经常使用加密算法探寻

在开发过程当中,经常用到各类加密方法和算法,本文总结了几种经常使用加密方法的原理。html


对称加密

图片描述

原理:

加密和解密数据使用同一个密钥,适合对大量数据进行加解密算法

安全性:

关键是密钥的保存方式,加密或是解密的任何一方泄漏密钥,都会致使信息泄漏安全

表明算法:

DES、3DES、Blowfish、IDEA、RC四、RC五、RC六、AES等函数

对称密码经常使用的数学运算:

  • 移位和循环移位

  移位就是将一段数码按照规定的位数总体性地左移或右移。循环右移就是当右移时,把数码的最后的位移到数码的最前头,循环左移正相反。例如,对十进制数码12345678循环右移1位(十进制位)的结果为81234567,而循环左移1位的结果则为23456781。ui

  • 置换

  就是将数码中的某一位的值根据置换表的规定,用另外一位代替。它不像移位操做那样整齐有序,看上去杂乱无章。这正是加密所需,被常常应用。加密

  • 扩展

  就是将一段数码扩展成比原来位数更长的数码。扩展方法有多种,例如,能够用置换的方法,以扩展置换表来规定扩展后的数码每一位的替代值。spa

  • 压缩

  就是将一段数码压缩成比原来位数更短的数码。压缩方法有多种,例如,也能够用置换的方法,以表来规定压缩后的数码每一位的替代值。.net

  • 异或

  这是一种二进制布尔代数运算。异或的数学符号为⊕ ,它的运算法则以下:
1⊕1 = 0
0⊕0 = 0
1⊕0 = 1
0⊕1 = 1
  也能够简单地理解为,参与异或运算的两数位如相等,则结果为0,不等则为1。htm

  • 迭代

  迭代就是屡次重复相同的运算,这在密码算法中常常使用,以使得造成的密文更加难以破解。blog


非对称加密

图片描述

原理:

非对称加密算法须要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,若是用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;若是用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密

安全性:

公钥能够被任何人知道,可是私钥被泄漏就会致使信息泄漏

应用场景:

数字签名,私钥拥有者对信息进行加密,接受者使用公钥解密成功,就能够肯定发送者的身份

密钥长度:

一般是1024,2048等。密钥长度增加一倍,公钥操做所需时间增长约4倍,私钥操做所需时间增长约8倍,公私钥生成时间约增加16倍

加密的明文长度:

加密的明文长度不能超过RSA密钥的长度减去11byte,好比密钥长度是1024位的,1024位=1024bit=128byte,128-11=117byte,因此明文长度不能超过117byte,若是长度超过该值将会抛出异常。加密后密文的长度为密钥的长度,如密钥长度为1024bit(128Byte),最后生成的密文固定为 1024bit(128Byte)

表明算法:

DES、3DES、Blowfish、IDEA、RC四、RC五、RC六、AES等


哈希散列算法

图片描述

原理:

采用某种散列函数,输入不一样长度的明文,获得相同的长度的密文,明文的微小变化都能引发密文的巨大变化。其实哈希散列算法不算是真正的加密,而是生成对应明文的指纹信息,用来校验数据的完整性。

安全性:

不能经过密文反推明文,一般做为数据的完整性校验

应用场景1:

生成信息摘要,验证信息的完整性

应用场景2:

不用明文存储用户密码,好比使用md5(md5(用户密码)+salt)来存储密码和验证密码,防止攻击者用彩虹表攻击

表明算法:

MD二、MD四、MD五、PANAMA、SHA-0、SHA-一、SHA-25六、SHA-512等

经常使用算法对比

名称 密钥长度 运算速度 安全性 资源消耗 加密类型
DES 56位 较快 对称
3DES 168位 对称
IDEA 128位 较慢 对称
AES 12八、19二、256位 对称
RSA 102四、204八、307二、4096 非对称
DSA 102四、204八、307二、4096 非对称
ECC 256 非对称
SHA-1 散列
MD5 散列

参考:

相关文章
相关标签/搜索