网络数据的传输一般都是用对称加密算法
非对称加密算法因为效率的问题只用来加密 对称加密算法 的秘钥和 用于 数字签名

案例

  1. AES 对称加密算法
  2. RSA 非对称加密算法

操作前 服务器和客户端都已拥有双方的公钥
Android的RSA公钥-->发送给服务器用
服务器的RSA公钥-->发送给客户端用

单项验证

如客户端验证服务器的真实性

Android客户端(拥有AES秘钥)
使用 非对称加密算法即 服务器的RSA公钥Android客户端的AES的秘钥进行加密

然后 Http Get请求 并发送Android客户端的AES秘钥给服务器

服务器收到请求后,使用自己的RSA私钥对请求解密 获取到Android的AES秘钥,然后把发送给Android客户端的数据如 byte [] datas进行签名即sign

把sign和datas 一起用Android客户端的AES秘钥进行加密,然后发送给Android客户端

Android客户端收到后,再用自己的AES秘钥把整个数据包解密,此时进行数据分离,获取到sign和datas,然后对sign进行验证,验证方法就是用服务器的公钥配合参数sign进行签名验证

Signature signature = Signature.getInstance("SHA1withRSA");signature.initVerify(pubKey); //使用服务器发给客户端的公钥boolean flag = signatrue.verify(sign);

注意事项

服务器的RSA私钥进行签名 sign,因为sign的长度是固定的(和初始化的秘钥长度相等),故很容易进行数据分离

如解密后进行str.substring()可以分离 datas和sign

更多相关文章

  1. [置顶] Android中AIDL实现进程通信(附源码下载)
  2. Android(安卓)Socket编程
  3. Android服务器端开发
  4. Android中使用Post请求
  5. 阿里技术沙龙第17期·杭州站-无线技术专场 记录
  6. Android中ActivityManagerService与应用程序(客户端)通信模型分
  7. 基于xmpp openfire smack开发之Android客户端开发[3]
  8. Android通过Servlet连接MySQL 实现登陆/注册(数据库+服务器+客户
  9. MoviGuard android客户端准备发布

随机推荐

  1. android 取手机号码
  2. Android发送Email
  3. Android ScrollView 使用注意事项
  4. Android uses-permission 总结
  5. Android Interview Questions & Answers
  6. error: style attribute '@android:attr/
  7. android.databinding.tool.util.LoggedEr
  8. Android 监听Fragment界面的点击事件
  9. Android和j2me的初级对比
  10. video player demo in android