以下主要介绍的长解密
一 后端部分处理
/**
* 公钥解密 RSA算法私钥加密
* @param string $encrypted 公钥加密串
* @param string $privKey 私钥
* @return bool|null|string
*/
public static function RSADecrypt($encrypted = '', $privKey = '')
{
//用base64将内容还原成二进制
$content = base64_decode($encrypted);
//把需要解密的内容,按128位拆开解密
$decrypted = '';
for ($i = 0; $i < strlen($content) / 128; $i++) {
$data = substr($content, $i * 128, 128);
openssl_public_decrypt($data, $decrypt, $privKey);
$decrypted .= $decrypt;
}
openssl_free_key($res);
return $decrypted;
}
/**
* 公钥加密
* @param string $content [待加密字符串]
* @param string $publicKey [公钥]
*/
public static function RSAEncrypt($content = '', $publicKey = '')
{
$encrypted = '';
openssl_public_encrypt($content, $encrypted, openssl_pkey_get_public($publicKey));
//加密成功,返回base64编码的字符串
return base64_encode($encrypted);
}
二 前端部分处理
一般我们使用到公钥加密的比较多,但是也会有一些需求需要前端来进行公钥解密
实现

var encrypt = new JSEncrypt();
encrypt.setPublicKey('-----BEGIN PUBLIC KEY-----' + PUBLIC_KEY + '-----END PUBLIC KEY-----');
var str = 'QIMXGxXvt5jrE/LNB0aaL3Ejpv4WQbNPNBxXSjrnIgDceTY2s0aaJcpWvTcNhjv+UoudA4HtJ6+sogqbpVWxV7WdhsyTyqjiqij0YkmjH4cn2uftZaWjljD9ZjBoJ6gxh/tlOK9h+tpuafhXv9CbQRQqcDfB44q35OZQvuG6bnFf+2sBFTMNsdHGTtKVslJUcLoFQwZ0NAv/NQyaQ0zWOb42mN/xSXrhEcP7H4+EHtcQ6J8NQqj6pcn439zSShSgQFlnHpkyWA3et/BvAcs1ly1JCBpd9vLAx3R/oHq6SBWxjthzY5N4SnsGV82PKUtGxfCDYjLFbUwVJNnCkWbPG7cV83uDAwX9vs1ikXn2O1j5C/rH4v3yB9a2uub/VGOi1x+o36OCLLgch1wRuj+252cWEhE8UQHy48lbznv7itvy6UjG+G5hf1frHqRziFIM+aPlmVYrlsBo8cKN9/Y04fxiTzwZSIAbNUvpQYc+jbqWExNwPGW4GgeqsEA60xWVocYPDInqhP5GvWV0L2hoG97QXiyIHR7nba/l/CS1E/e0oWkWiOBIDqj8eyajUUm2SExQSxW2/xy23eXkcNNr2iApHQloqAfc9CzJUGc47iIUT4r9cVO7hbLwRMw05+5Kagc6Z9vRxwhV2viFTpNYZVIYekyWtt3IU91EzCnhiL65fsRc4vJT2Vym0jHQdgufnVCPjT1dDNJEi9d4hObYUEFkOsAFPV80lOG+YGLRT6sZ4Jhy4VYv2LGPJhv5ZehqUjkph0AqeDlPOI+if/mT0OktLFG/t3FjVyY6yOq3xgYvCBQxBO+fnFr35fD2FJEpSnwlcTfwunWJ+VWW1pgyjw==';
var s = encrypt.decryptLong(str);
console.log(s);
以上就是大概介绍吧,用到的伙伴可以直接拿去用 有什么需要完善的欢迎大家评论!