背景:最近在看唐巧的书<<IOS进阶>>有一段谈到RSA加密算法的
黑客在咖啡馆或机场等一些公共场所,用自己的电脑设置一个与该场所名字相同的免费 WiFi,那么受害者只要不小心使用了该 WiFi,就可能泄漏自己的明文密码。大多数普通人, 都会使用一样的密码登录他的所有的账号,这就意味着他的其他账号,例如淘宝或网上银 行账号也有被盗的风险。
正确的做法应该是这样:事先生成一对用于加密的公私钥,客户端在登录时,使用公钥将用 户的密码加密后,将密文传输到服务器。服务器使用私钥将密码解密,然后加盐 (Salt:在密 码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密 码的散列结果不相符) 之后再多次求 MD5,之后再和服务器原来存储的用同样方法处理过的 密码匹配,如果一致,则登录成功。这样,黑客即使截获了加密后的密文,由于没有私钥, 也无法还原出原始的密码。而服务器即使被黑客攻陷,黑客除了暴力尝试,也无法从加盐和 多次 MD5 后的密码中还原出原始的密码。这样就保证了用户密码的安全。
联想到之前自己接如渠道SDK时也有用到公钥私钥的,于是就找了一下相关资料,加深一下理解。
http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html
https://www.zhihu.com/question/25912483
https://www.youtube.com/watch?v=wXB-V_Keiu8
借用知友的理解:
A要发消息给B
B有一个盒子(公钥)一把锁(私钥)
A拿到盒子放消息进去,上锁。
快递给B,只有B能打开盒子。
即使中途被劫也无法打开盒子。
实际应用:
RSA和AES结合使用, 用AES密钥对明文进行加密,但是AES的密钥容易泄露,所以,用RSA的私钥对AES的密钥加密,即对明文进行一次加密,再对密钥加密.前几天才上传一个加密的代码
AES加密参考:
http://blog.csdn.net/yhhwatl/article/details/52523739