前言
原文章地址:https://www.iczrx.cn/archives/82/ 之前做了一个php通过RSA加密的一个文章
代码比较多也比较繁琐
所以现在新做了一个,放到了一个类里面
可以引用了直接调用,只需要配置公私钥即可
可以通过公私钥进行加解密
源码部分
Config.php
<?php
//ps:公钥和私钥不需要起始符,且必须保持内容为同一行
//公钥内容
$pubkey_content = "";
//私钥内容
$prikey_content = "";
?>
Keys.php
<?php
//定义前缀
$pub_pre = '-----BEGIN PUBLIC KEY-----';
$pub_suf = '-----END PUBLIC KEY-----';
$pri_pre = '-----BEGIN RSA PRIVATE KEY-----';
$pri_suf = '-----END RSA PRIVATE KEY-----';
//证书内容
require_once "Config.php";
//组合公私钥
$pubkey = $pub_pre . "\n" . $pubkey_content . "\n" . $pub_suf;
$prikey = $pri_pre . "\n" . $prikey_content . "\n" . $pri_suf;
//加密解密部分
class Keys {
//通过公钥加密方法
public function encrypts_pubkey($text) {
global $pubkey;
$result = "";
openssl_public_encrypt($text,$result,$pubkey);
return base64_encode($result);
}
//通过私钥解密方法
public function decrypts_prikey($text) {
global $prikey;
$result = "";
openssl_private_decrypt(base64_decode($text),$result,$prikey);
return $result;
}
//通过私钥加密方法
public function encrypts_prikey($text) {
global $prikey;
$result = "";
openssl_private_encrypt($text,$result,$prikey);
return base64_encode($result);
}
//通过公钥解密方法
public function decrypts_pubkey($text) {
global $pubkey;
$result = "";
openssl_public_decrypt(base64_decode($text),$result,$pubkey);
return $result;
}
}
使用这个类
在php中引用Keys.php
如下面代码所示:
<?php
require_once "Keys.php";
//加密内容
$content = "晚夜的个人博客";
$keys = new Keys;
echo $keys->encrypts_pubkey($content);
?>
这个代码的意思就是用公钥加密一段内容
输出结果为:
想要解密时就将密文输进去,调用decrypts_prikey这个方法
如下面代码所示:
<?php
require_once "Keys.php";
//加密内容
$content = "jODHYUmAXehrD5mC63HuNC4J8qkmbCTtqC1AHhgr4la5tmCr0R8oOlf/cdYgRs6dNVNrbMYgyrQcuGZYvNlPdPQ78zK6GcW/n60W/lXpAtpoOR15WqKK1LaEFru2arf1YF2cLvXgt2+G2nc2/Keo4lIoFs4TqYvlVjs/47ZoOvjeglkHIvtfYwaKgvNtDlXMo1uG7BXJ761jmeExxvSEaom8q02h/MHwe5mXP1/uajbt192DWt183KrRSz7k1Au7w8FhCYUpN6pd3Kd2SgBqkcpyqTL1zWkrGBNIawFpMsurvgsSjNQXj0+JOBsQ+1Y882Ys5WgTuLmrTwlebLJLjw==";
$keys = new Keys;
echo $keys->decrypts_prikey($content);
?>
输出结果即为“晚夜的个人博客“
同样的,使用私钥加密和公钥解密只需要调用encrypts_prikey和decrypts_pubkey即可