• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
春宵一刻你懂刻z 显示全部楼层 发表于 2021-10-25 19:12:34 |阅读模式 打印 上一主题 下一主题
各人可以先到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. $encrypted = base64_encode($encrypted);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的
  22. return $encrypted;
  23. }
复制代码
  1. /**
  2. * RSA公钥解密(私钥加密的内容通过公钥可以解密出来)
  3. * @param string $public_key 公钥
  4. * @param string $data 私钥加密后的字符串
  5. * @return string $decrypted 返回解密后的字符串
  6. * @author mosishu
  7. */
  8. function publicDecrypt($public_key,$data){
  9. $decrypted = '';
  10. $pu_key = openssl_pkey_get_public($public_key);//这个函数可用来判断公钥是否是可用的
  11. $plainData = str_split(base64_decode($data), 128);//生成密钥位数 1024 bit key
  12. foreach($plainData as $chunk){
  13.   $str = '';
  14.   $decryptionOk = openssl_public_decrypt($chunk,$str,$pu_key);//公钥解密
  15.   if($decryptionOk === false){
  16.    return false;
  17.   }
  18.   $decrypted .= $str;
  19. }
  20. return $decrypted;
  21. }
复制代码
  1. //RSA公钥加密
  2. function publicEncrypt($public_key,$data){
  3. $encrypted = '';
  4. $pu_key = openssl_pkey_get_public($public_key);
  5. $plainData = str_split($data, 100);
  6. foreach($plainData as $chunk){
  7.   $partialEncrypted = '';
  8.   $encryptionOk = openssl_public_encrypt($chunk,$partialEncrypted,$pu_key);//公钥加密
  9.   if($encryptionOk === false){
  10.    return false;
  11.   }
  12.   $encrypted .= $partialEncrypted;
  13. }
  14. $encrypted = base64_encode($encrypted);
  15. return $encrypted;
  16. }
复制代码
  1. //RSA私钥解密
  2. function privateDecrypt($private_key,$data){
  3. $decrypted = '';
  4. $pi_key = openssl_pkey_get_private($private_key);
  5. $plainData = str_split(base64_decode($data), 128);
  6. foreach($plainData as $chunk){
  7.   $str = '';
  8.   $decryptionOk = openssl_private_decrypt($chunk,$str,$pi_key);//私钥解密
  9.   if($decryptionOk === false){
  10.    return false;
  11.   }
  12.   $decrypted .= $str;
  13. }
  14. return $decrypted;
  15. }
复制代码
以上这篇PHP实现RSA加解密算法示例(天生密钥位数为1024位的方法)就是小编分享给各人的全部内容了,希望能给各人一个参考,也希望各人多多支持脚本之家。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作