关于java php go 中AES加解密秘钥长度问题 AES对称加密算法原理 JAVA破解AES秘钥长度限制 golang使用aes库实现加解密 AES-128192256加密算法及其安全脆弱分析

今天心血来朝,想用go把php中的一个小功能重写一下,但在解密aes加密的数据时碰到了个坑!

php的mcrypt拓展(貌似php7.1版本以上不支持了)提供了aes的加解密:

关于java  php go 中AES加解密秘钥长度问题
AES对称加密算法原理
JAVA破解AES秘钥长度限制
golang使用aes库实现加解密
AES-128192256加密算法及其安全脆弱分析

而且php aes 的秘要长度不仅仅 128 192 256 规定的这三种长度。只要不超过256都行。

所以php的加密秘钥传了个23*8=184。不知道当时的前辈是咋想的!!!

但是到go语言"crypto/aes"包里:

关于java  php go 中AES加解密秘钥长度问题
AES对称加密算法原理
JAVA破解AES秘钥长度限制
golang使用aes库实现加解密
AES-128192256加密算法及其安全脆弱分析

限制了秘钥长度位16 24 32 字节 也就是128 192 256位。所以暂时不能用go的标准库解密了,只能通过其他方式解决了。

在网上寻找答案的过程中,我发现java的加密有如下说法。

关于java  php go 中AES加解密秘钥长度问题
AES对称加密算法原理
JAVA破解AES秘钥长度限制
golang使用aes库实现加解密
AES-128192256加密算法及其安全脆弱分析

 如果提前熟知使用规则,就不至于在项目后期出差错。

所以在平时使用到的技术,不光要知其然,也要知其所以然。这样在使用的时候,我们才不会犯下比较低级的错误。

发现几篇加解密有关的博文,分享给大家:

JAVA破解AES秘钥长度限制

golang使用aes库实现加解密

AES-128192256加密算法及其安全脆弱分析

谁知道解决golang不限制秘要长度的朋友可以评论下,谢谢!