iOS - 项目加密处理
转载: 原地址https://blog.csdn.net/xiaohe901216/article/details/51152030
因为公司是做P2P的,所以数据安全还是有些必要的,说下思路:
密码一般就是MD5加盐,后来改为苹果自己的钥匙串keychain加密
一些客户隐瞒信息加密处理还是很有必要,既保护客户隐私安全又保护了公司客户资源。
我们项目基本处理就是AES+RSA
当用户登录时除了用户名和密码还会需要一个key(key就是一个登录的验证),这个key是由登录号(手机号)加5位随机数生成,手机号基本就是为了保证key的唯一性,此key用做AES密钥,这个密钥是每次执行登录操作随机生成的
然后RSA加密不用于加密数据,而是用来加密AES的密钥,RSA的公钥有服务器端提供
程序每次启动执行登录都会生成一个key,并且每次请求都会进行一次key的验证,同时也确保了账号的登录唯一(换机登录问题),如果请求内容有需要加密的直接AES加密即可
这种方案每次启动程序都要执行登录操作
下边是一个看到的类似处理方案:
一个移动客户端与服务端安全交互的解决方案。
针对: http://my.oschina.net/kaster/blog/130940
客户端使用AES加密报文,使用RSA公钥加密AES密钥
服务端使用私钥解密AES密钥,再使用AES密钥解密密文
隐掉了数据压缩部分
标签: <无>
代码片段(2)[全屏查看所有代码]
1. [文件] rsa.rar ~ 6KB 下载(298)
2. [代码][Java]代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
|
问:RSA 很少用来做加密算法使用,一般多数用于数据签名算法中。这是由于 RSA 作为加密算法进行加密处理时,其所能处理的原文数据量不能超过 (RSA 长度 / 8 - 11),比如:RSA 1024 进行加密运算时,原文的长度不能超过 117 个字节。
你这个安全数据传输可以改进一下,可以参照 SSL/TLS 协议握手的原理,AES 密钥不是固定的,由通信双方各随机生成一半,双方生成的一半密钥通过对方的 RSA 公钥加密传送给对方,对方使用自己的 RSA 私钥解密,这样与自己的另外一半 AES 密钥拼合成数据传输的加密密钥,从而完成密钥的交换过程。
答:这一块是用于移动客户端,架构上只要保证客户端的数据不被窃取即可。 客户端的AES密钥是随机生成,RSA加密不用于加密数据,而是用来加密AES的密钥。 因为客户端不是支付类的客户端,所以没有对每台终端生成独立的私钥证书。 ----- 另外,之前客户端与服务端的交互是短连接,每次交互都随机生成AES密钥,数据用AES加密,AES密钥用RSA加密,每次请求同时传递密文和加密后的AES密钥; 现在的方案是,客户端启动后,先进行一次检查公钥证书的交互,再进行一次激活交互,激活交互用于客户端传递AES密钥(128位,使用RSA公钥加密),服务端返回激活流水,后续的交互,客户端使用激活时设定的AES密钥进行数据加密。