对称加密的具体方法有 对称加密算法有哪些
对称加密算法就是能将数据加解密 。加密的时候用密钥对数据进行加密,解密的时候使用同样的密钥对数据进行解密 。
对称加密算法 DESDES (Data Encryption Standard) 是 1977 年美国联邦信息处理标准(FIPS)中所采用的一种对称密码(FIPS 46-3) 。DES 一直以来被美国以及其他国家的政府和银行所使用 。不建议原因:1997 年 DES Challenge I 比赛中用了 96 天破解了 DES 密钥,1998 年的 DES Challenge II-1 比赛中用了 41 天就破解了密钥 。1998 年的 DES Challenge II-2 比赛中用了 56 个小时,1999 年的 DES Challenge III 比赛中只用了 22 小时 15 分钟 。目前来说,DES 已经不再安全了 。除了用来解密以前老的 DES 密文以外,不再使用 DES 进行加密了 。
对称加密算法 3DES/DESede三重 DES (triple-DES) 是为了增加 DES 强度,所以将 DES 重复 3 次得到的一种算法 。也称为 TDEA (Triple Data Encryption Algorithm),通常缩写为 3DES 。不建议原因:3DES 由于处理速度不高,除了兼容之前的 DES 以外,目前基本不再使用它了
对称加密算法 AES 和 RijndaelAES (Advanced Encrytion Standard) 是取代前任标准 DES 而成为新标准的一种对称密码算法 。在全世界的范围内征集 AES 加密算法,最终于 2000 年从候选中选出了 Rijndael 算法,确定它为新的 AES 。1997 年开始征集 AES,1998 年满足条件并最终进入评审的有 15 个算法:CAST-256、Crypton、DEAL、DFC、E2、Frog、HPC、LOK197、Magenta、MARS、RC6、Rijndael、SAFER 、Serpent、Twofish 。2000 年 10 月 2 日,Rijndael 并定位 AES 标准 。AES 可以免费的使用 。Rijndael 的分组长度和密钥长度可以分别以 32 位比特为单位在 128 比特到 256 比特的范围内进行选择 。不过在 AES 的规范中,分组长度被固定在 128 比特,密钥长度只有 128、192 和 256 比特三种 。优点:
- SPN 网络和 Feistel 网络相比,加密效率更高,因为 SPN 一轮会加密所有位 。所以加密所需轮数会更少 。
- 还有一个优势在于加密用的 4 步可以并行运算 。
- 目前还没有针对 AES 有效的攻击破译方式 。
- 普遍认为,AES-128-GCM 性能比 AEC-128-CBC 性能高 。
密钥长度
运行速度
安全性
资源消耗
DES
【对称加密的具体方法有 对称加密算法有哪些】56位
较快
低
中
3DES
112位或168位
慢
中
高
AES
128、192、256位
快
高
低
Java代码示例该示例借用了Hutool工具类,小而好的java工具类
String content = "test中文";//随机生成密钥byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();//构建SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);//加密byte[] encrypt = aes.encrypt(content);//解密byte[] decrypt = aes.decrypt(encrypt);//加密为16进制表示String encryptHex = aes.encryptHex(content);//解密为字符串String decryptStr = aes.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);
举例中的随机生成的秘钥也可以自己定义,但是必须是24字节 。比如:String content = "自定加密Key";private static final AES AES = SecureUtil.aes("SecretkeyLengthUse24byte".getBytes());//加密byte[] encrypt = aes.encrypt(content);//解密byte[] decrypt = aes.decrypt(encrypt);//加密为16进制表示String encryptHex = aes.encryptHex(content);//解密为字符串String decryptStr = aes.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);
加点料:移动端比较火的是 chacha20-poly1305ChaCha20-Poly1305是Google所采用的一种新式加密算法,性能强大,在CPU为精简指令集的ARM平台上尤为显著(ARM v8前效果较明显),在同等配置的手机中表现是AES的4倍(ARM v8之后加入了AES指令,所以在这些平台上的设备,AES方式反而比chacha20-Poly1305方式更快,性能更好),可减少加密解密所产生的数据量进而可以改善用户体验,减少等待时间,节省电池寿命等 。有时候科学上网加密配置就可能涉及到该种方式 。推荐阅读
- 善琏湖笔是哪儿的特产吗?善琏湖笔介绍
- 羊毛笋炖咸肉是哪儿的特产吗?羊毛笋炖咸肉介绍
- 梅鲚是哪儿的特产吗?梅鲚介绍
- 盐卤豆腐是哪儿的特产吗?盐卤豆腐介绍
- 震远同牛皮糖是哪儿的特产吗?震远同牛皮糖介绍
- 德清毛竹是哪儿的特产吗?德清毛竹介绍
- 芽麦塌饼是哪儿的特产吗?芽麦塌饼介绍
- 玫瑰酥糖是哪儿的特产吗?玫瑰酥糖介绍
- 湖羊肉是哪儿的特产吗?湖羊肉介绍
- 泗安酥糖是哪儿的特产吗?泗安酥糖介绍