有谁知道php RSA加解密过程的来看一下 有谁知道php RSA加解密过程的来看一下

ras\u53ef\u4ee5\u52a0\u5bc6php\u4ee3\u7801\u5417

php\u975e\u5bf9\u79f0\u52a0\u5bc6\uff1a\u91c7\u7528\u516c\u94a5\u548c\u79c1\u94a5\u53cc\u94a5\u5f62\u5f0f\u5bf9\u4fe1\u606f\u8fdb\u884c\u52a0\u5bc6\u548c\u89e3\u5bc6\uff0c\u5176\u4e2d\u516c\u94a5\u548c\u79c1\u94a5\u662f\u6210\u5bf9\u5b58\u5728\u7684\uff0c\u5373\u4f7f\u7528\u516c\u94a5\u5bf9\u4fe1\u606f\u52a0\u5bc6\u540e\u7684\u5bc6\u6587\u53ea\u7528\u4f7f\u7528\u5176\u76f8\u5e94\u7684\u79c1\u94a5\u624d\u53ef\u4ee5\u8fdb\u884c\u89e3\u5bc6\uff0c\u53cd\u4e4b\u4e5f\u6bc5\u7136\u3002\u76f8\u5bf9\u5bf9\u79f0\u52a0\u5bc6\u800c\u8a00\u53eb\u505a\u975e\u5bf9\u79f0\u52a0\u5bc6\u3002\u5b89\u5168\u6027\u975e\u5e38\u597d\uff0c\u4f46\u52a0\u5bc6\u548c\u89e3\u5bc6\u8017\u65f6\u8f83\u957f\uff0c\u6bd4\u8f83\u9002\u7528\u4e8e\u5c0f\u6570\u636e\u91cf\u52a0\u5bc6\u89e3\u5bc6\u3002\u5e38\u7528\u4f8b\u5b50\uff1a\u6570\u5b57\u7b7e\u540d\u3001RSA\u3002
\u516c\u94a5\u52a0\u5bc6

//\u83b7\u53d6\u516c\u79d8\u94a5
$pubKey = file_get_contents('public.key');
//\u8fd4\u56de\u8d44\u6e90\u578b\u7684
$pubKey = openssl_pkey_get_public(file_get_contents('public.key'));
openssl_public_encrypt('123456',$crypted,$pubKey,OPENSSL_PKCS1_PADDING);
base64_encode($crypted);

\u4e91\u76d8\u94fe\u63a5\u5df2\u79c1\u4fe1\u53d1\u9001\u7ed9\u4f60\u4e86\uff0c\u4f60\u770b\u4e00\u4e0b\u662f\u4e0d\u662f\u4f60\u9700\u8981\u7684
\u5982\u679c\u8fd8\u6709\u54ea\u4f4d\u670b\u53cb\u60f3\u8981\uff0c\u8bf7\u70b9\u201c\u8d5e\u201d\u6b64\u6761\u56de\u7b54\u4ee5\u540e\uff0c\u5728\u4e0b\u9762\u7684\u8bc4\u8bba\u91cc\u7559\u4e0b\u60a8\u7684\u8054\u7cfb\u65b9\u5f0f
\u5b66\u65e0\u6b62\u5883\uff0c\u5e0c\u671b\u56de\u7b54\u80fd\u7ed9\u4f60\u5e26\u6765\u5e2e\u52a9,\u5982\u679c\u6ee1\u610f\u8bf7\u91c7\u7eb3\uff0c\u4e0d\u6ee1\u610f\u7684\u8bdd\u8bf7\u7ee7\u7eed\u8ffd\u95ee\u3002

  1、加米解米的第一步是生成公钥、私钥对,私钥加米的内容能通过公钥解米(反过来亦可以)下载开源RSA米钥生成工具openssl(通常Linux系统都自带该程序),解压缩至独立的文件夹,进入其中的bin目录,执行以下命令:
  复制代码 代码如下:
  openssl genrsa -out rsa_private_key.pem 1024openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pemopenssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem第一条命令生成原始 RSA私钥文件 rsa_private_key.pem,第二条命令将原始 RSA私钥转换为 pkcs8格式,第三条生成RSA公钥 rsa_public_key.pem从上面看出通过私钥能生成对应的公钥,因此我们将私钥private_key.pem用在服务器端,公钥发放给android跟ios等前端2、php中用生成的公钥、私钥进行加米解米,直接上代码复制代码 代码如下:
  $fp=fopen("rsa/rsa_private_key.pem","r"); //你的私钥文件路径$private_key=fread($fp,8192);
  fclose($fp);
  $fp1=fopen("rsa/rsa_public_key.pem","r"); //你的公钥文件路径$public_key=fread($fp1,8192);
  fclose($fp1);
  //echo $private_key;
  $pi_key=openssl_pkey_get_private($private_key);//这个函数可用来判断私钥是否是可用的,可用返回资源id Resource id$pu_key=openssl_pkey_get_public($public_key );//这个函数可用来判断公钥是否是可用的print_r($pi_key);echo "\n"; echo "<br>";
  print_r($pu_key);echo "\n"; echo "<br>";
  echo "<hr>";
  $data='php ras加米算法';
  $encrypted = "";
  $decrypted = "";
  echo "加米的源数据:".$data."\n"; echo "<br>";echo "private key encrypt:\n"; echo "<br>";openssl_private_encrypt($data,$encrypted,$pi_key);//私钥加米$encrypted = base64_encode($encrypted);//加米后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的echo '私钥加米后:'.$encrypted."\n"; echo "<br>";echo "<br>";echo "public key decrypt:\n"; echo "<br>";openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);//私钥加米的内容通过公钥可用解米出来echo '公钥解米后:'.$decrypted."\n"; echo "<br>";echo "<hr>";
  echo "public key encrypt:\n"; echo "<br>";openssl_public_encrypt($data,$encrypted,$pu_key);//公钥加米$encrypted = base64_encode($encrypted);
  echo $encrypted,"\n"; echo "<br>";
  echo "private key decrypt:\n"; echo "<br>";openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//私钥解米echo $decrypted,"\n"; echo "<br>";
  PHP的RSA配置常见问题:
  ●PHP开发语言的代码示例中openssl文件夹中的3个DLL文件用法1、如果你的系统是windows系统,且system32文件目录下没有libeay32.dll、ssleay32.dll这两个文件那么需要拷贝这两个文件到system32文件目录。
  2、如果您的php安装目录下(php\ext)中没有php_openssl.dll那么请把php_openssl.dll放在这个文件夹中
  喜欢加米解米的小伙伴一定要好好看看这篇文章,受益匪浅。。。
?

扩展阅读:扫一扫题目出答案 ... rsa在线解密工具 ... rsa在线公钥解密 ... rsa加密算法在线工具 ... rsa加密算法 公钥 私钥 ... rsa算法在线解密 ... 在线rsa加密解密 ... rsa加密过程和解密过程 ... 简单的rsa解密 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网