数字签名的案例说明
16lz
2021-01-24
网络数据的传输一般都是用对称加密算法
非对称加密算法因为效率的问题只用来加密 对称加密算法 的秘钥和 用于 数字签名
案例
- AES 对称加密算法
- 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
更多相关文章
- [置顶] Android中AIDL实现进程通信(附源码下载)
- Android(安卓)Socket编程
- Android服务器端开发
- Android中使用Post请求
- 阿里技术沙龙第17期·杭州站-无线技术专场 记录
- Android中ActivityManagerService与应用程序(客户端)通信模型分
- 基于xmpp openfire smack开发之Android客户端开发[3]
- Android通过Servlet连接MySQL 实现登陆/注册(数据库+服务器+客户
- MoviGuard android客户端准备发布