对称加密算法

对称加密算法

        所有的对称加密都有一个共同的特点:加密和解密所用的密钥是相同的。

  现代对称密码可以分为序列密码和分组密码两类:序列密码将明文中的每个字符单独加密后再组合成密文;而分组密码将原文分为若干个组,每个组进行整体加密,其最终加密结果依赖于同组的各位字符的具体内容。也就是说,分组加密的结果不仅受密钥影响,也会受到同组其他字符的影响。

 

序列密码

分组密码

  序列密码的安全性看上去要更弱一些,但是由于序列密码只需要对单个位进行操作,因此运行速度比分组加密要快得多。目前的分组密码都比序列密码要更安全一点。在实际运用中最常被使用的是分组密码。这其中应用最经典和最广泛的就是数据加密标准(DES)和高级加密标准(AES)。

  在对称加密算法中常用的算法有:DES3DES、AES、TDEA、Blowfish、RC2等。DES加密与AES加密其算法特征为:

明文 <-> 密钥 <-> 密文

所以和非对称加密最大的不同就是它能通过密钥“倒推”解密。

常见三种对称加密算法对比图如下:

  • DES加密算法:1977年美国标准局(NBS)发布的数据加密标准(DES),并且在20年内都是美国政府所使用的标准加密方式。它是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。但不幸的是2000年高级加密标准AES出来后它就被干掉了。
  • 3DES(Triple DES):是基于DES的对称算法,对一块数据用三个不同的密钥进行三次加密,强度更高;
  • AES加密算法:AES至今仍然是最强大的对称加密算法,目前还不存在从技术上有效破解AES的方法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,AES标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

使用DES/AES加密时需要了解一些参数:

  • 密钥长度:128-bit、192-bit、256-bit
  • 加密模式:CBC、ECB、CFB、OFB、CTR
  • 填充方式:pkcs5padding、pkcs7padding、zeropadding、iso1026、ansix923
  • 加密结果编码方式:base64编码、16进制编码

无论什么语言平台,AES的算法总是相同的,但加密时设置的参数不一致会导致加密的结果不同,但都能用同一密钥解密出同一个明文。

验证: 在线DES/AES加密

Github地址:https://github.com/kumataahh

五种对称加密

1、DES
已破解,不再安全,基本没有企业在用了
对称加密算法的基石,具有学习价值
密钥长度56(JDK)、56/64(BC)
2、DESede(三重DES)
早于AES出现来替代DES
计算密钥时间太长、加密效率不高,所以也基本上不用
密钥长度112/168(JDK)、128/192(BC)
3、AES
最常用的对称加密算法
密钥建立时间短、灵敏性好、内存需求低(不管怎样,反正就是好)
实际使用中,使用工作模式为CTR(最好用BC去实现),此工作模式需要引入IV参数(16位的字节数组)
密钥长度128/192/256,其中192与256需要配置无政策限制权限文件(JDK6)
填充模式最常用的两种PKCS5Padding和PKCS7Padding,其中后者只有BC独有。
4、IDEA
常用的电子邮件加密算法
工作模式只有ECB
密钥长度128位
5、PBE
综合了消息摘要算法和对称加密算法,最常见的是PBEWithMD5AndDES
工作模式只有CBC(已丧失安全性,不推荐使用),所以PBE也不推荐使用了

相关文章

背景:计算机内部用补码表示二进制数。符号位1表示负数,0表...
大家好,我们现在来讲解关于加密方面的知识,说到加密我认为不...
相信大家在大学的《算法与数据结构》里面都学过快速排序(Qui...
加密在编程中的应用的是非常广泛的,尤其是在各种网络协议之...
前言我的目标是写一个非常详细的关于diff的干货,所以本文有...
对称加密算法 所有的对称加密都有一个共同的特点:加密和...