php使用rsa前后端加密通信

在线生成公钥私钥

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);
发布了65 篇原创文章 · 获赞 20 · 访问量 2076

猜你喜欢

转载自blog.csdn.net/weixin_43993175/article/details/104627272
今日推荐