登录/注册/支付 基本都要用到加密方案
加密原理:
后台生成rsa密钥对,然后在登陆页面设置rsa公钥,提交时用公钥加密密码,生成的密文传到后台,用私钥解密,获取密码明文。
前端运用RSA技术进行加密简单来说分为以下几步骤(0-4):
0.md5加密:引入md5的js,然后使用var md5password = md5( input框的明文value值 )
引入RSA加密文件jsencrypt.js
实例化加密对象
var encrypt = new JSEncrypt(); //前端要做的事情
var decrypt = new JSEncrypt(); //前端不要做的事情,可能后台要处理的事情
设置公钥 / 密钥(公钥pubkey跟你们后台大佬要吧)
encrypt.setPublicKey(pubkey); //前端要做的事情
decrypt.setPrivateKey(privkey); //前端不要做的事情,可能后台要处理的事情
加密 / 解密
var encrypted = jsEncrypt.encrypt( 待加密内容md5password ); //前端要做的事情(这个“待加密的内容”是经过md5加密过的密码)
var uncrypted = decrypt.decrypt( 加密后待解密内容 ); //前端不要做的事情,可能后台要处理的事情
我不太明白的事情是:为什么第三步要encrypt.setPublicKey来处理公钥(我看之前的项目中最后登录接口传到后台的是:1.经过md5与encrypt两次加密的账户密码,2.获取公钥接口,后台传给我的公钥(没处理过),与及一些其他参数内容。
不太明白的点:1.接口返回的公钥有啥用? 2.encrypt.setPublicKey(pubkey)有啥用?(后台给的公钥是加密用的,后台自己保留的私钥是解密用的。但是这个公钥私钥只进行了encrypt.setPublicKey(pubkey)与decrypt.setPrivateKey(privkey),这两个操作,我并不明白它的具体意义在哪?)