美文网首页
php实现RSA的加密解密和签名验签功能

php实现RSA的加密解密和签名验签功能

作者: 奋斗的工程师1 | 来源:发表于2022-08-23 16:41 被阅读0次

    最近在3A平台购买了服务器,部署了PHP环境

    一:生成RSA的私钥和公钥

    1:RSA私钥生成

    $resource = openssl_pkey_new();
    openssl_pkey_export($resource, $privateKey);
    echo($privateKey);
    
    

    2:RSA公钥生成

    $resource = openssl_pkey_new();
    $detail = openssl_pkey_get_details($resource);
    $publicKey = $detail['key'];
    echo($publicKey);
    
    

    注意:
    如果在生成私钥和公钥时出现如下提示:

    image.png

    需要将你的php环境下的openssl.cnf文件地址加到系统环境变量中
    增加变量名OPENSSL_CONF,变量值为openssl.cnf文件地址

    二:RSA实现私钥加密和公钥解密

    1:RSA私钥加密

    $key = '123';//需要加密的字符串
    $pkey=openssl_pkey_get_private($privateKey);//$privateKey为私钥字符串
    openssl_private_encrypt($key, $encryptedData, $pkey);
    $encryptedData = base64_encode($encryptedData);
    echo($encryptedData);
    
    

    2:RSA公钥解密

    $pkey = openssl_pkey_get_public($publicKey);//$publicKey为公钥字符串
    openssl_public_decrypt(base64_decode($encryptedData), $data, $pkey);//$encryptedData为私钥加密串
    echo($data);
    
    

    三:RSA实现签名和验签

    1:私钥签名

    $key = '123';//需要签名的字符串
    $pkey=openssl_pkey_get_private($privateKey);//$privateKey为私钥字符串
    openssl_sign($key, $signature,$privateKey);
    openssl_free_key($pkey);
    $signature = base64_encode($signature);
    echo($signature);
    
    

    2:公钥验签

    $pkey = openssl_pkey_get_public($publicKey);//公钥字符串
    $verify = openssl_verify($key, base64_decode($signature),$publicKey);//$key为需要签名的字符串//$signature为签名后字符串
    openssl_free_key($pkey);
    echo($verify);
    
    

    根据如上我们就可以实现RSA的加密解密和使用RSA的私钥公钥实现签名和验签功能了!

    相关文章

      网友评论

          本文标题:php实现RSA的加密解密和签名验签功能

          本文链接:https://www.haomeiwen.com/subject/vvrogrtx.html