解决iOS、Android、Java加解密不一致的问题。
让人蛋疼的加密与解密。
这两天在做iOS和Android客户端与Java服务器端的数据加密与解密,一开始使用的是DES,但是觉得不够安全而且速度较慢,所以后来换成了AES。两种方式中,总是有两端生成的密文不一致的问题出现,经过蛋疼的调试,最终实现了加密结果一致;
现在大致记录一下经过,代码就不贴出了,如果有人需要直接留言好了;
DES在做加密时会出现自身可以加解密,但是密文不一样的情况,我做的iOS、Java、和网上找的各种DES加解密器,没有一个一样的。究其原因,是因为其密文是根据Key和IV向量生成,而这些工具的IV向量不同。当我把IV向量统一后,结果就一致了;
AES加密的密文不同,有几种可能:加密密钥长度不同(128、192、256),由于其加密方式对秘钥长度、明文的长度有限制(貌似是16位Byte的整数倍吧),所以针对其他加密内容需要填充字符,补填方式分为PKCS5Padding和PKCS7Padding,需要把这些都确定后才能保证密文一致;
推荐几个参考资料:DES:http://www.cnblogs.com/janken/archive/2012/04/05/2432930.html
AES加解密器:http://www.seacha.com/tools/aes.php