Js参数RSA加密传输,jsencrypt.js的使用
浏览数 212081
赞
(0)
注意几点:
1、参数传递的+号处理,在传输时会把+变成空格,不处理后端就报错了。
1、前端代码
<script src="http://passport.weinidai.com/static/js/jsencrypt.min.js"></script>
<script type="text/html" id="public_key">
-----BEGIN PUBLIC KEY-----
MIIBojANBgkqhkiG
...
gMBAAE=
-----END PUBLIC KEY-----
</script>
<script type="text/javascript">
var encrypt = new JSEncrypt();
encrypt.setPublicKey(document.getElementById("public_key").innerHTML);
function enras() {
document.getElementById("email").value = encodeURI(encrypt.encrypt(document.getElementById("email").value)).replace(/\+/g, '%2B');
document.getElementById("password").value = encodeURI(encrypt.encrypt(document.getElementById("password").value)).replace(/\+/g, '%2B');
return true;
}
</script>
2、后端代码
$rsa_email = $_POST('email');
$rsa_password = $_POST('password');
$private_key = file_get_contents('rsa_private_key_boxin.pem');
$rsa_email = str_replace('%2B','+',$rsa_email);
openssl private decrypt(base64 decode($rsa_email),$email,$private_key);//私钥解密
$rsa_password = str_replace('%2B','+',$rsa_password);
openssl private decrypt(base64 decode($rsa_password),$password,$private_key);//私钥解密
var_dump($email, $password);
1、参数传递的+号处理,在传输时会把+变成空格,不处理后端就报错了。
1、前端代码
<script src="http://passport.weinidai.com/static/js/jsencrypt.min.js"></script>
<script type="text/html" id="public_key">
-----BEGIN PUBLIC KEY-----
MIIBojANBgkqhkiG
...
gMBAAE=
-----END PUBLIC KEY-----
</script>
<script type="text/javascript">
var encrypt = new JSEncrypt();
encrypt.setPublicKey(document.getElementById("public_key").innerHTML);
function enras() {
document.getElementById("email").value = encodeURI(encrypt.encrypt(document.getElementById("email").value)).replace(/\+/g, '%2B');
document.getElementById("password").value = encodeURI(encrypt.encrypt(document.getElementById("password").value)).replace(/\+/g, '%2B');
return true;
}
</script>
2、后端代码
$rsa_email = $_POST('email');
$rsa_password = $_POST('password');
$private_key = file_get_contents('rsa_private_key_boxin.pem');
$rsa_email = str_replace('%2B','+',$rsa_email);
openssl private decrypt(base64 decode($rsa_email),$email,$private_key);//私钥解密
$rsa_password = str_replace('%2B','+',$rsa_password);
openssl private decrypt(base64 decode($rsa_password),$password,$private_key);//私钥解密
var_dump($email, $password);
