解决iOS、Android、Java加解密不一致的问题(DES、AES)
2015-09-21 11:02
351 查看
解决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
让人蛋疼的加密与解密。
这两天在做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
相关文章推荐
- 【MDCC技术大咖秀】Android内存优化之OOM
- Android源码开发之通话计时功能
- android中系统权限介绍
- android四大组件--ContentProvider详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android异步处理之AsyncTaskLoader简单使用
- [Android Pro] 横竖屏切换时,禁止activity重新创建,android:configChanges="keyboardHidden|orientation" 不起作用
- Android开发中的正在加载动画效果
- android系统自动升级-otacert.zip
- No resource identifier found for attribute 'showAsAction' in package 'android'
- android对数据库的增删改查操作
- Android工具类之Gson封装类
- android Imageview去除边框
- Android Serializable介绍
- android 环境搭建
- 关于dd指令镜像分区的一些使用体会
- Android开机启动Activity或者Service方法
- 读取SIM卡中的EF文件流程
- Android自定义View(一)
- Android开发之利用MQTT协议实现消息的即时推送