问题
在使用AES对称加密来对后台和Android接口多保密措施时,发现Android的加密结果一直和后台加密结果不一样,自然的后台解密失败,无法调通。
主要还是对AES用法不熟悉导致的,最后还是把正确方式给研究出来了。这里记录下主要解决方案。
先了解下AES,百度解释
AES (高级加密标准)
高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院(NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。
以下为重点,是不同环境加解密不同的主要原因。以下为重点,是不同环境加解密不同的主要原因。
AES加解密本是其实还可以分几个模块或几个配置。不同平台下,这些默认的配置都是不同的,这是导致不一致的根本原因。
1、 加密模式(ECB/CBC/CTR/OFB/CFB)
2、 填充模式(pkcs5padding/pkcs7padding/zeropadding/iso10126/ansix923)
3、 密码
4、 偏移量
5、 编码
以上如果有其中一项不同,便会导致加解密不一致问题。所以在解决问题的关键是统一不同环境的配置。能明确的就明确指定,能两端统一配置的就统一配置。基本是能解决问题的。
另,我在测试过程中密码不是标准的16位,也导致了不一致;因此一切还是要按规范来,才不容易出纰漏。
另附一个在线加解密工具
AES在线加解密工具