RSA加密算法 简单用法:javascript 加密 与 php 解密
简单例子:密码加密传送
RSA加密算法是一种非对称加密算法。在前端可以用公钥加密,后端可以用私钥解密。
javascript
<script src="https://passport.cnblogs.com/scripts/jsencrypt.min.js"></script>
<script type="text/javascript">
function login(){
var password = document.form.password.value;// 密码明文
// 公钥
var pubkey=-----BEGIN PUBLIC KEY-----;
pubkey+=MIGfM112CSqGSIb3DQE12QUAA4GNADCBiQKBgQCzDB832vsFQPK4Gl24nKCHDRTwZ;
pubkey+=LQvu4p8PUxmkk8jDFQIDAQAB;
pubkey+=-----END PUBLIC KEY-----;
var encrypt = new JSEncrypt();
encrypt.setPublicKey(pubkey);
// 对密码加密
var encrypted = encrypt.encrypt(JSON.stringify({
"encrypt": "yes", "password": password}));
// 设置加密的密码
document.form.password.value = encrypted;
// 提交 省略
}
</script>
PHP
需要开启openssl支持。
// 前端传过来的加密后的密码 $pw = strip_tags(trim($_POST[password])); // 私钥 $private_key = "-----BEGIN PRIVATE KEY----- KKIC12345DANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALMMHxzm+wVA8rga VacoIcNFPBlKReBH0aSp12345pQYBhQr4br3FaM7KCYUxFOh5yNgjYQ51gxlDOWH 67cRTm147777/DYPXGncDDcwXaQ1rq1n62SK7djH4ZN0ViSIZWrpUeol9TxlFfOb nNNLXxTBSbAtC+7inw9TGaSTyMMVAgMBAAECgYEAkkpmJ999888Y5XmG4FP2+iBY kWVRIIYtsX66661yItxaIyMThXqasEsGa87t9lNDknEyT4Yd8PSji+r5WhOG2qbe StPVmGJ+gDYEbGNe5i9W4Dl9898ict/AwnFSu55SErNNOy3J3lUg9stJq45jLU3u g92a3T0000TFzw== -----END PRIVATE KEY-----"; // 用私钥解密,解密结果会赋值给$decrypted openssl_private_decrypt(base64_decode($pw),$decrypted,$private_key); // 解密结果 Array ( [encrypt] => yes [password] => mima ) $passwordArray = json_decode($decrypted,true); // 解密后的密码 $pw = $passwordArray[password]; // 省略
