前端 vue
首先 npm jsencrypt;npm install jsencrypt
再需要加密传输的位置引入import JSEncrypt from 'jsencrypt/bin/jsencrypt';
对密码进行加密let encryptor = new JSEncrypt() // 新建JSEncrypt对象
let publicKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnw/PMCyoQtHNNxpJJdBEX/bN3
vNWRnFvzhTOHl7jlA41ospJ1x+b1p4AoeK6m2m/PC1427sfEIMTv/9xkCdC70Fve
Ns3mvi88PA/LGyoa3YXtBvZBsi8WaX/CLAeSDXyEiQYcgsec68LyTMKOHBISTV5b
wbnXAYuBNfWaY1GjqQIDAQAB-----END PUBLIC KEY-----` //把之前生成的贴进来,实际开发过程中,可以是后台传过来的
encryptor.setPublicKey(publicKey) // 设置公钥
let rsaPassWord = encryptor.encrypt(password) // 对需要加密的数据进行加密
后端 解密
然后后台解密function RSA($data){
$private_key='-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCnw/PMCyoQtHNNxpJJdBEX/bN3vNWRnFvzhTOHl7jlA41ospJ1
x+b1p4AoeK6m2m/PC1427sfEIMTv/9xkCdC70FveNs3mvi88PA/LGyoa3YXtBvZB
si8WaX/CLAeSDXyEiQYcgsec68LyTMKOHBISTV5bwbnXAYuBNfWaY1GjqQIDAQAB
AoGBAJuG2XkL0I9z+oDb2bom08H9/GbAtO0sm0IC9mZ5jXsh8/Jfuc9e5wpNok3i
s2cTkhvLWihq7N8x0eD8vgAv6UT0ATbllP5T51DdVlKophbX/NZUiqXfZLREg4ZZ
aBizzrOBWg6EBnXD1u+sld0WgA7iAofhPSor1IB7fwbtLJxRAkEAz2Au+bRZtR2e
u1yVaLK3urt82TZvjmbeK7/3MZDg9yghiuUyP9nAIPGYZwRCQbDLrym12OiJn3s7
Lb0FkFNf8wJBAM8aJRbKWlnLQxxAdzbR7kJpKYlZKwEANguGNN66Xqc6hKrYSlsc
aBEHpBNCpWX/BrtBqyKfmfb+aByMo/EQMPMCQDZ8O/tpkkRO4vyxR6Q5iKJsTlI3
xjmw92ChUE5alXD6v01iCMDT8nH1aChw6wOdcvazy86Q0k/vrc3HoyWXclcCQESe
Mv+0F+98a0XnDhi5wal7UmnRg3AXc9CprMbHFSlvOBmrBCff55MM5w4CnO6IauCM
R3l3S/oMHM6owoDSjoUCQEkgq2hbSYdjYHquExOJBrwB6UDchP74t98nlJ3bfOkq
td1XVub56pdwr7fvmqOG8REO2zirjvhs9H0FTS0eNq4=-----END RSA PRIVATE KEY-----';
//私钥解密
$hex_encrypt_data = trim($data); //十六进制数据
openssl_private_decrypt(base64_decode($hex_encrypt_data), $decrypt_data, $private_key); //解密数据
return $decrypt_data;
}
在线生成RSA密匙地址:点我跳转
最后贴上效果: