对称加密算法有哪些(对称加密的具体方法有)
对称性加密优化算法便是能将数据信息加解密。加密的情况下用密钥对信息开展加密,解密的情况下应用一样的密钥对信息开展解密。
对称性加密优化算法 DES
DES (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 和 Rijndael
AES (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编码实例
该实例百思特网使用了Hutooljava工具,小而好的javajava工具
String content = "test汉语";
//随机生成密钥
byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.get百思特网Value()).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(encry百思特网pt);
//加密为16进制表明
String encryptHex = aes.encryptHex(content);
//解密为字符串数组
String decryptStr = aes.decryptStr(encryptHex, CharsetUtil.CHARSET_UTF_8);
加一点料:手机端较为火的是 chacha20-poly1305
ChaCha20-Poly1305是Google所运用的一种新型加密优化算法,特性强劲,在CPU为精简指令集的ARM服务平台上尤其明显(ARM v8前实际效果较显著),在同样配备的智能手机中主要表现是AES的4倍(ARM v8以后添加了AES命令,因此在这种服务平台上的机器设备,AES方法还比chacha20-Poly1305方法更快,特性更强),可降低加密解密所造成的信息量从而可以提升客户体验,降低等待的时间,节约电池循环次数等。 有时科学上网加密配备就很有可能牵涉到这种方法。