今天,我通过RSA+AES来实现注册中密码的加密传输(1,RSA库:转到Github 2,AES库:转到Github)
JS代码如下,附其运行结果(其中一次,AES,RSA加密的值是会更变的):
问题:
1,请问我的JS有没有逻辑上的问题;
2,请问PHP应该怎么解密RSA与AES(如果有库就更好了);
3,我的思路:
客户端(JavaScript):
AES 加密 原始用户密码
RSA 公钥 加密 AES秘钥
---数据传输---
服务端(PHP):
RSA 私钥 解密 获得 AES秘钥
AES 解密 获得 原始用户密码
再通过加密 原始用户密码 获得 加密用户密码 存储到 数据库 中
这样可以吗?
$(function () {
//加密部分
//AES
var password_form="QAQ";
console.log(password_form);
var password = CryptoJS.AES.encrypt(password_form,'Lime Website').toString();
console.log(password);
//RSA
var public_key = $("#inputPublic_key").val();
console.log(public_key);
var private_key = $("#inputPrivate_key").val();
console.log(private_key);
var encrypt = new JSEncrypt();
encrypt.setPublicKey(public_key);
var AES_key = encrypt.encrypt(password);
console.log(AES_key);
//解密部分(实际应由服务端完成)
//RSA
var decrypt = new JSEncrypt();
decrypt.setPrivateKey(private_key);
var AES_key_decrypt = decrypt.decrypt(AES_key);
console.log(AES_key_decrypt);
//AES
var bytes = CryptoJS.AES.decrypt(AES_key_decrypt,'Lime Website');
var password_decrypt = bytes.toString(CryptoJS.enc.Utf8);
console.log(password_decrypt);
});
恭喜你,重新发明了https