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];

// 省略
经验分享 程序员 微信小程序 职场和发展