当前位置:首页 > 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. /** 
  27.  * RSA公钥解密(私钥加密的内容通过公钥可以解密出来) 
  28.  * @param string $public_key 公钥 
  29.  * @param string $data 私钥加密后的字符串 
  30.  * @return string $decrypted 返回解密后的字符串 
  31.  * @author mosishu 
  32.  */ 
  33. function publicDecrypt($public_key,$data){ 
  34.  $decrypted = ''; 
  35.  $pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的 
  36.  $plainData = str_split(base64_decode($data), 128);//生成密钥位数 1024 bit key 
  37.  foreach($plainData as $chunk){ 
  38.   $str = ''; 
  39.   $decryptionOk = openssl_public_decrypt($chunk,$str,$pu_key);//公钥解密 
  40.   if($decryptionOk === false){ 
  41.    return false; 
  42.   } 
  43.   $decrypted .= $str; 
  44.  } 
  45.  return $decrypted; 
  46. } 
  47.  
  48. //RSA公钥加密 
  49. function publicEncrypt($public_key,$data){ 
  50.  $encrypted = ''; 
  51.  $pu_key = openssl_pkey_get_public($public_key); 
  52.  $plainData = str_split($data, 100); 
  53.  foreach($plainData as $chunk){ 
  54.   $partialEncrypted = ''; 
  55.   $encryptionOk = openssl_public_encrypt($chunk,$partialEncrypted,$pu_key);//公钥加密 
  56.   if($encryptionOk === false){ 
  57.    return false; 
  58.   } 
  59.   $encrypted .= $partialEncrypted; 
  60.  } 
  61.  $encrypted = base64_encode($encrypted); 
  62.  return $encrypted; 
  63. } 
  64.  
  65. //RSA私钥解密 
  66. function privateDecrypt($private_key,$data){ 
  67.  $decrypted = ''; 
  68.  $pi_key = openssl_pkey_get_private($private_key); 
  69.  $plainData = str_split(base64_decode($data), 128);  
  70.  foreach($plainData as $chunk){ 
  71.   $str = ''; 
  72.   $decryptionOk = openssl_private_decrypt($chunk,$str,$pi_key);//私钥解密 
  73.   if($decryptionOk === false){ 
  74.    return false; 
  75.   } 
  76.   $decrypted .= $str; 
  77.  } 
  78.  return $decrypted; 
  79. } 

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

Tags: RSA加解密 PHP生成密钥

分享到: