Android数据加密
为什么要进行数据加密?
在一个Android应用中,客户端与服务器之间数据通信安全是非常重要的。这就涉及到了数据的加密。
Android中客户端与服务器端数据的加密主要有两种情况:
1.只有创建者才能够知道的数据 比如用户密码数据,这类数据加密后必须是不可逆的,也就是说数据加密后传到服务器,服务器端无需解密,也不能解密,直接存进数据库。
2.也是比较重要的数据,但是服务器端可能也需要知道的,也就是说数据加密后必须是可以解密的。
对于这两种不同加密的情况自然我们要使用不同的加密算法
对于第一类,我们应该使用不可逆的加密算法。代表性的就是MD5加密。
对于第二类,我们应该使用可逆的加密算法,可逆加密算法主要分为两类:对称加密和非对称加密。
对称加密: 
加密秘钥和解密秘钥使用同一个秘钥
数据发送方将加密后的数据和加密秘钥一起发给接收方,接收方接收到数据后,先解密出加密秘钥, 
然后再根据秘钥和解密算法得出加密数据的明文。
在对称加密算法中,使用的秘钥只有一个,收发双方都是用这个秘钥,这就需要收发双发事前都知道秘钥。
代表的对称加密算法:AES,DES 
AES/DES 加密速度快,适合大量数据,DES容易破解,一般用3重DES,可以使用更加安全的AESm 
非对称加密: 
非对称加密算法需要两个秘钥,公开秘钥(public key)和私有秘钥(private key),公有秘钥和私有秘钥是一对 
使用公开秘钥对数据加密后只有私有秘钥能够解密,使用私有秘钥加密后只有公有秘钥能够解密。
非对称加密的过程一般是这样的:由甲方生成一对秘钥,并且把公有秘钥对外公开,拿到这个公有秘钥的乙方使用 
该秘钥对数据进行加密,然后把加密后的数据发送给甲方,甲方接收到数据后使用自己的私有秘钥进行解密。
代表的非对称加密算法:RSA RSA加密速度慢,适合少量数据加密。
总结:
基于上面的几种代表性算法的特点,在实际开发中一般可以采用RSA+AES混合加密。
RSA+AES混合加密过程:
客户端: 
-首先生成一对RSA秘钥(公钥和私钥) 
-生成AES秘钥 
-再通过AES秘钥加密需要传输的数据 
-使用RSA公钥加密生成的AES秘钥 
-将加密后的AES秘钥和加密后的数据一起发送到服务器端
服务器端: 
-接收加密后的AES秘钥和加密后的数据 
-使用RSA私钥解密接收到的AES秘钥密文 
-再使用解密到的AES秘钥对接收到的数据进行解密

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Android中多个Activity间的数据共享
  5. Android(安卓)SQLite教程:内部架构及SQLite使用办法
  6. Android在开发中的实用技巧之Parcelable的使用以及如何传递复杂
  7. android ListView分页加载
  8. [置顶] JuheNews For aNdroid (改进版)
  9. 条件数据库Android:sqllite的简单使用

随机推荐

  1. Android三种常用动画分享(1)--帧动画
  2. Android快速实现断点续传的方法
  3. 四、在ANDROID中调试程序
  4. [Android]开发环境配置(windows)-draft
  5. Use twitter4j oauth to post status in
  6. android中的progressbar
  7. android异步任务完成后再执行主线程任务
  8. android 中的 ViewPager+ Fragment
  9. android中处理图片成圆角
  10. Android 解析字符乱码解决