加解密算法分析( 三 )


DES是一个分组加密算法 , 典型的DES以64位为分组对数据加密 , 加密和解密用的是同一个算法 。它的密钥长度是56位(因为每个第8 位都用作奇偶校验) , 密钥可以是任意的56位的数 , 而且可以任意时候改变 。
DES加密过程大致如下:

  1. 首先需要从用户处获取一个64位长的密码口令 , 然后通过等分、移位、选取和迭代形成一套16个加密密钥 , 分别供每一轮运算中使用;
  2. 然后将64位的明文分组M进行操作 , M经过一个初始置换IP , 置换成m0 。将m0明文分成左半部分和右半部分m0 = (L0 , R0) , 各32位长 。然后进行16轮完全相同的运算(迭代) , 这些运算被称为函数f , 在每一轮运算过程中数据与相应的密钥结合;
  3. 在每一轮迭代中密钥位移位 , 然后再从密钥的56位中选出48位 。通过一个扩展置换将数据的右半部分扩展成48位 , 并通过一个异或操作替代成新的48位数据 , 再将其压缩置换成32位 。这四步运算构成了函数f 。然后 , 通过另一个异或运算 , 函数f的输出与左半部分结合 , 其结果成为新的右半部分 , 原来的右半部分成为新的左半部分 。将该操作重复16次;
  4. 经过16轮迭代后 , 左 , 右半部分合在一起经过一个末置换(数据整理) , 这样就完成了加密过程 。
对于DES解密的过程大家猛然一想应该是使用跟加密过程相反的算法 , 事实上解密和加密使用的是一样的算法 , 有区别的地方在于加密和解密在使用密匙的时候次序是相反的 。比如加密的时候是K0,K1,K2......K15 , 那么解密使用密匙的次序就是倒过来的 。之所以能用相同的算法去解密 , 这跟DES特意设计的加密算法有关 , 感兴趣的同学可以深入分析 。
2.3 AES高级加密标准(AES,Advanced Encryption Standard) , 与DES一样 , 使用AES加密函数和密匙来对明文进行加密 , 区别就是使用的加密函数不同 。
上面说过DES的密钥长度是56比特 , 因此算法的理论安全强度是2^56 。但以目前计算机硬件的制作水准和升级情况 , 破解DES可能只是山脉问题 , 最终NIST(美国国家标准技术研究所(National Institute of Standards and Technology))选择了分组长度为128位的Rijndael算法作为AES算法 。
AES为分组密码 , 分组密码也就是把明文分成一组一组的 , 每组长度相等 , 每次加密一组数据 , 直到加密完整个明文 。在AES标准规范中 , 分组长度只能是128位 , 也就是说 , 每个分组为16个字节(每个字节8位) 。密钥的长度可以使用128位、192位或256位 。密钥的长度不同 , 推荐加密轮数也不同 , 如下表所示:
AES密钥长度(32位比特字)分组长度(32位比特字)加密轮数
AES-1284410AES-1926412AES-2568414
3. 非对称加密#【加解密算法分析】非对称加密算法的特点是 , 秘钥一次会生成一对 , 其中一份秘钥由自己保存 , 不能公开出去 , 称为“私钥” , 另外一份是可以公开出去的 , 称为“公钥” 。
将原文用公钥进行加密 , 得到的密文只有用对应私钥才可以解密得到原文;
将原文用私钥加密得到的密文 , 也只有用对应的公钥才能解密得到原文;
因为加密和解密使用的是两个不同的密钥 , 所以这种算法叫作非对称加密算法 。
加解密算法分析

文章插图
 
与对称加密算法的对比
  • 优点:其安全性更好 , 对称加密的通信双方使用相同的秘钥 , 如果一方的秘钥遭泄露 , 那么整个通信就会被破解 。而非对称加密使用一对秘钥 , 一个用来加密 , 一个用来解密 , 而且公钥是公开的 , 秘钥是自己保存的 , 不需要像对称加密那样在通信之前要先同步秘钥 。
  • 缺点:非对称加密的缺点是加密和解密花费时间长、速度慢 , 只适合对少量数据进行加密 。
在非对称加密中使用的主要算法有:RSA、Elgamal、ESA、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等 。不同算法的实现机制不同 。


推荐阅读