当前位置:首页 > PHP教程 > php应用 > 列表

PHP实现RSA加解密算法示例(生成密钥位数为1024位的方法)

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-05 16:41:06 浏览: 评论:0 

下面小编就为大家分享一篇PHP实现RSA加解密算法示例(生成密钥位数为1024位的方法),具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

大家可以先到http://web.chacuo.net/netrsakeypair这个网站,在线生成公钥和私钥

RSA非对称加密算法,如果是公钥加密,就得用私钥解密,反过来也一样,私钥加密的就用公钥解密,以下是相关实现函数

  1. /** 
  2.  * RSA私钥加密 
  3.  * @param string $private_key 私钥 
  4.  * @param string $data 要加密的字符串 
  5.  * @return string $encrypted 返回加密后的字符串 
  6.  * @author mosishu 
  7.  */ 
  8. function privateEncrypt($private_key,$data){ 
  9.  $encrypted = ''
  10.  $pi_key = openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id 
  11.  //最大允许加密长度为117,得分段加密 
  12.  $plainData = str_split($data, 100);//生成密钥位数 1024 bit key 
  13.  foreach($plainData as $chunk){ 
  14.   $partialEncrypted = ''
  15.   $encryptionOk = openssl_private_encrypt($chunk,$partialEncrypted,$pi_key);//私钥加密 
  16.   if($encryptionOk === false){ 
  17.    return false; 
  18.   } 
  19.   $encrypted .= $partialEncrypted
  20.  } 
  21.    
  22.  $encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 
  23.  return $encrypted
  24.  
  25. /** 
  26.  * RSA公钥解密(私钥加密的内容通过公钥可以解密出来) 
  27.  * @param string $public_key 公钥 
  28.  * @param string $data 私钥加密后的字符串 
  29.  * @return string $decrypted 返回解密后的字符串 
  30.  * @author mosishu 
  31.  */ 
  32. function publicDecrypt($public_key,$data){ 
  33.  $decrypted = ''
  34.  $pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的 
  35.  $plainData = str_split(base64_decode($data), 128);//生成密钥位数 1024 bit key 
  36.  foreach($plainData as $chunk){ 
  37.   $str = ''
  38.   $decryptionOk = openssl_public_decrypt($chunk,$str,$pu_key);//公钥解密 
  39.   if($decryptionOk === false){ 
  40.    return false; 
  41.   } 
  42.   $decrypted .= $str
  43.  } 
  44.  return $decrypted
  45.  
  46. //RSA公钥加密 
  47. function publicEncrypt($public_key,$data){ 
  48.  $encrypted = ''
  49.  $pu_key = openssl_pkey_get_public($public_key); 
  50.  $plainData = str_split($data, 100); 
  51.  foreach($plainData as $chunk){ 
  52.   $partialEncrypted = ''
  53.   $encryptionOk = openssl_public_encrypt($chunk,$partialEncrypted,$pu_key);//公钥加密 
  54.   if($encryptionOk === false){ 
  55.    return false; 
  56.   } 
  57.   $encrypted .= $partialEncrypted
  58.  } 
  59.  $encrypted = base64_encode($encrypted); 
  60.  return $encrypted
  61.  
  62. //RSA私钥解密 
  63. function privateDecrypt($private_key,$data){ 
  64.  $decrypted = ''
  65.  $pi_key = openssl_pkey_get_private($private_key); 
  66.  $plainData = str_split(base64_decode($data), 128);  
  67.  foreach($plainData as $chunk){ 
  68.   $str = ''
  69.   $decryptionOk = openssl_private_decrypt($chunk,$str,$pi_key);//私钥解密 
  70.   if($decryptionOk === false){ 
  71.    return false; 
  72.   } 
  73.   $decrypted .= $str
  74.  } 
  75.  return $decrypted

以上这篇PHP实现RSA加解密算法示例(生成密钥位数为1024位的方法)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持php粉丝网。

Tags: RSA加解密 PHP生成密钥

分享到: