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]; // 省略