在线生成公钥私钥
http://web.chacuo.net/netrsakeypair
前端代码
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>rsa</title>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<!-- <script src="jquery.base64.js"></script> -->
<script src="http://passport.cnblogs.com/scripts/jsencrypt.min.js"></script>
<script type="text/javascript">
$(function () {
var encrypt = new JSEncrypt();
//公钥
encrypt.setPublicKey("MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7Gkcg4rg13s6XcFnk9T5sDWcGnXxw7tTQ6LSCWKHxPP830PpWdnL8WlnHZuFgvH4OkzTQb5TFEYlAtWLtV/QVMaFUlRLR+K/4oUcqYTZfxQCmAgiivmz3Lv5rEokM0wOioukv3kmd+UaUGwoXFlSQ9hrSBfJAr5JwQb/zlCw6RQIDAQAB");
var data = encrypt.encrypt("123456");
console.log(data);
});
</script>
</head>
<body>
</body>
</html>
后端代码
/**
* 解密
* @param string $encryptString
* @return string
*/
public function privateDecrypt($encryptString = '')
{
$decrypted = '';
$key = "MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBALsaRyDiuDXezpdwWeT1PmwNZwadfHDu1NDotIJYofE8/zfQ+lZ2cvxaWcdm4WC8fg6TNNBvlMURiUC1Yu1X9BUxoVSVEtH4r/ihRyphNl/FAKYCCKK+bPcu/msSiQzTA6Ki6S/eSZ35RpQbChcWVJD2GtIF8kCvknBBv/OULDpFAgMBAAECgYEAuMDH/7cgg0FR6sQsYCOy0euiEiwsly+ewfMnW5a9woKi2bDnob0w6fMlt/rlDirSpv3BJxknZDleuKDj4M3628p+HlLGXl1Wfsgpt4/BQFcLmvn+p+CDHkAN7sf0AA8Hnk6og1fb3Fn1vSy4mHFLzQEvY8He2Jrf421kNOS6ebkCQQDbup4wNGATAZbXfuv5MMsiTjhM2EHN55nQsxpdPGlW+6C+4b0JgqvZu2XNn3hTAY7dYaHeNbLIehHl/1SzuTejAkEA2fzs5v+XL7U3nbY83ZpQHF8sW8GVT4NiPsfyDXsAVyftCs8mDeEX3u2dOyQrYvddiVhqe8PCkHe4OQV3p5ME9wJAUMY9uMLIPrRq2zVRUf3Z7vaKQ9WL+0GUjeAJZRT8NHm0EfeyInji69u0BO8GsJz2A/QMKT/cRU56ne5LGPaRuQJBAJmu02ZYM8KSxE8QOAET1f7qql9WL2oLeqxAUspmOWs43smMGYwXcbjdVMhpS51OQEegahIvhXBMtzicPiuKXykCQQDXmkQoKBXl1SXhxJ9jawsu7KpOOtoJDESkFHNzkQtyN94ezsGaFhzc/M07oUcEwjE+fe9yS4nWm6PCN5fXg2y4";
$key_eol = (string) implode("\n", str_split((string) $key, 64));
$privateKey = (string) "-----BEGIN RSA PRIVATE KEY-----\n" . $key_eol . "\n-----END RSA PRIVATE KEY-----";
openssl_private_decrypt(base64_decode($encryptString), $decrypted, $privateKey);
return $decrypted;
}
/**
* 加密
* @param string $data
* @return string
*/
public function publicEncrypt($data = '')
{
$encrypt_data = '';
// $publicKey = self::JS_ENCRYPT;
// openssl_public_encrypt($data, $encrypt_data, $publicKey);
$key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7Gkcg4rg13s6XcFnk9T5sDWcGnXxw7tTQ6LSCWKHxPP830PpWdnL8WlnHZuFgvH4OkzTQb5TFEYlAtWLtV/QVMaFUlRLR+K/4oUcqYTZfxQCmAgiivmz3Lv5rEokM0wOioukv3kmd+UaUGwoXFlSQ9hrSBfJAr5JwQb/zlCw6RQIDAQAB";
$key_eol = (string) implode("\n", str_split((string) $key, 64));
$publicKey = (string) "-----BEGIN PUBLIC KEY-----\n" . $key_eol . "\n-----END PUBLIC KEY-----";
openssl_public_encrypt($data, $encrypt_data, $publicKey);
$encrypt_data = base64_encode($encrypt_data);
return $encrypt_data;
}
//使用
$param = $this->privateDecrypt("SfdXkgPVP02vpajkPuS3Yrad4lnI5fXcwR5zCHKtp6Abf6xUQ1BTsLtkRq9h4QGZ2/B1Bwww4W6zCD0tZDZ4Mjcm0YrXcHnHBJdEcwTNtSVmFfxO3u8CpDRUu7a5P3a8/baFIfcdSDw705uhzEROD/Jqm7W2cH6c3I0ZAruehro=");
$array = json_decode($param, true);
var_dump($array);