【PHP】使用RSA加密解密

1、首先生成RSA公钥私钥,参考链接

 

2、加密解密代码如下

复制代码
<?php

/**
 * @description  RSA公钥加密 私钥解密
 * @param string $data 待加解密数据
 * @param string $operate 操作类型 encode:加密 decode:解密
 * @return string 返回加密内容/解密内容
 */
function RSA_openssl($data, $operate = 'encode'){
    //RSA 公钥
    $rsa_public = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFRm523+lSQw1StmL2JqymO8ShnZX3i5kffEq+8wV3WjNlIjvNRKtNm9a1+SDmliHs5p/DN/nv2QS4w8QzJcSk+QlfU/lXF+LuXpBjAODGlpQai1T60zOk+Nx4KX18wKalh6mU/54iH3euGGgRjq2XW8Mrzk8Bv5p6zj1S6gbLewIDAQAB';

    //RSA 私钥
    $rsa_private = 'MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMVGbnbf6VJDDVK2YvYmrKY7xKGdlfeLmR98Sr7zBXdaM2UiO81Eq02b1rX5IOaWIezmn8M3+e/ZBLjDxDMlxKT5CV9T+VcX4u5ekGMA4MaWlBqLVPrTM6T43HgpfXzApqWHqZT/niIfd64YaBGOrZdbwyvOTwG/mnrOPVLqBst7AgMBAAECgYEAuwvz0xytAoV3DXTHUjMLQjarUr2zItqm3fagfHq6NRc+Yebaot84OUbIhxPnARtaoV9uHdBmV+cCFhnwXrqxvjvoPdRH2CeBIdW/JpBpf6zWjycWiI6kmtwToqFBXyznXwiulWzQPPq5HYKzoBNXeJ3y7L9wHe7uCAnudssbMJkCQQDmDN9UD9Ct7wnP40kwFcRuH6oL1qS4pHNalo0RdmNmOV/6gz+uXjwwY1/VCuLethS9JLDXmtxBSlgPJ0QueexNAkEA24cdoQ8y5E4rIlE+nYvuDEQnzTLBiw3H3UmYKrxX89AV0sSDLFZuIWGzAVkK+zI4u8Ou7vR1hS9b18QKsm3a5wJBAMOY6kGk+L8KYQNasp2pxEwFrCVIqOE9Ib9CBkt0p2sBGXP8KCbvhKl3tMGE8gR+N//htGJ9DwyMU3b+4d/KVnkCQFB+//dR2mhq3VgtEFe2uqgWyb1tchiqCfJzjO+Gtn15fLcXRb4ZRzLIX1oMK4GmjbUT8O5AB2O51OSORxncPFsCQQDZo237o+C+jYiKFc5H+vTIZs6AOBBDBT6kg6dFfjftqaoYCox1Dj1ukdSsjtaH6bZZBxs7KXdRkcwRFvIptg/f';

    //RSA 公钥加密
    if ('encode' == $operate) {
        $public_key = "-----BEGIN PUBLIC KEY-----\n" . wordwrap($rsa_public, 64, "\n", true) . "\n-----END PUBLIC KEY-----";
        $key = openssl_pkey_get_public($public_key);
        if (!$key) {
            echo '公钥不可用';
            return '';
        }
        $return_en = openssl_public_encrypt($data, $crypted, $key);
        if (!$return_en) {
            echo '公钥加密失败';
            return '';
        }
        return base64_encode($crypted);
    }

    //RSA 私钥解密
    if ('decode' == $operate) {
        $private_key = "-----BEGIN PRIVATE KEY-----\n" . wordwrap($rsa_private, 64, "\n", true) . "\n-----END PRIVATE KEY-----";
        $key = openssl_pkey_get_private($private_key);
        if (!$key) {
            echo '私钥不可用';
            return '';
        }
        $return_de = openssl_private_decrypt(base64_decode($data), $decrypted, $key);
        if (!$return_de) {
            echo '私钥解密失败';
            return '';
        }
        return $decrypted;
    }
return '';
} 


?>
复制代码

 

posted @   bug毁灭者  阅读(2612)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示