• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
huaweichenai
帮助1

一:生成RSA的私钥和公钥

1:RSA私钥生成

  1.  
    $resource = openssl_pkey_new();
  2.  
    openssl_pkey_export($resource, $privateKey);
  3.  
    echo($privateKey);

2:RSA公钥生成

  1.  
    $resource = openssl_pkey_new();
  2.  
    $detail = openssl_pkey_get_details($resource);
  3.  
    $publicKey = $detail['key'];
  4.  
    echo($publicKey);

注意:

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

学新通

 需要将你的php环境下的openssl.cnf文件地址加到系统环境变量中

增加变量名OPENSSL_CONF,变量值为openssl.cnf文件地址

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

1:RSA私钥加密

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

2:RSA公钥解密

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

三:RSA实现签名和验签

1:私钥签名

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

2:公钥验签

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

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgfeabi
系列文章
更多 icon
同类精品
更多 icon
继续加载