PHP三种方式读取RSA密钥加解密、签名验签完整教程

教程下载地址: 网赚博客http://www.piaodoo.com/创业项目排行榜前十名http://www.piaodoo.com/


第一步、生成公私钥

在线生成公钥私钥对,RSA公私钥生成-ME2在线工具

密钥长度

  • RSA 密钥通常有不同的长度,通常以位数来表示,如 1024 位、2048 位等。一般来说,密钥长度越长,加密强度越高,但同时也会增加加密和解密的计算复杂度。一般推荐使用 2048 位或更长的 RSA 密钥来确保较高的安全性。

密钥格式

  • OpenSSL 中的私钥通常采用 PEM 格式(Privacy-Enhanced Mail,即隐私增强邮件)存储。PEM 格式的密钥是经过 Base64 编码的文本字符串,通常以 -----BEGIN PRIVATE KEY----- 开头,以 -----END PRIVATE KEY----- 结尾。
  • 另外,私钥也可以存储在 PKCS#12 格式的证书文件中,通常以 .p12 或 .pfx 结尾。这些文件通常包含私钥、公钥和证书链等信息。

第二步、三种方式读取RSA密钥

第1种:公私钥弄成一行,必须一行没有空格和换行

$publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKZ1mKTymRoGKnHiP1xAy4aiyt5r0BscCZnDAonCrMFZ4kBGriPNHxEaLr5lfBnMKw7k6i+2dsFPSEZooTvqtPUCAwEAAQ==';
$privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEApnWYpPKZGgYqceI/XEDLhqLK3mvQGxwJmcMCicKswVniQEauI80fERouvmV8GcwrDuTqL7Z2wU9IRmihO+q09QIDAQABAkBunx3nGHXYjppsfn++7iyTd+I7+Agfy/0xWyB3rpEiGGgfemjcRFaeq5SC2vUNXsrEOY5gbUSQmFxH//Cym18NAiEA1z1cZx/Q9cbIjFPwp1a+K5CVFDXDcfbi/AQgAkVs0/cCIQDF+2fr23AoBslcOC4S0yAx94AbgxCntYuRqztxybsrcwIgMW86ZcT87TX2oaQ1xXk6vC68zqN6fBZEE7Wu1Fa1pAkCIElmOJP3qfAc/AAlj+dIwLHlqWgJwl3674CU9Bfui2bDAiEA0CKJpF8x7KANCcopEQC93PsbIztuML322LOfDV1Lw/k=';

转化能使用的密钥资源 

  • 如果私钥不是资源类型,则将私钥进行处理,将其转换为 PEM 格式。这里使用 chunk_split 函数将私钥按照每行64个字符的长度进行分割,并在适当的位置插入换行符 \n
  • 在拼接完整的 PEM 格式私钥之后,再使用 openssl_pkey_get_private 函数将 PEM 格式的私钥转换为 OpenSSL 的私钥资源
$pem = chunk_split($privateKey, 64, "\n");
$pem = "-----BEGIN PRIVATE KEY-----\n" . $pem. "-----END PRIVATE KEY-----\n";

p e m 2 = c h u n k s p l i t ( pem2 = chunk_split( pem2=chunksplit(publicKey, 64, “\n”);
$pem2 = “-----BEGIN PUBLIC KEY-----\n” . $pem2 . “-----END PUBLIC KEY-----\n”;

第2种:直接复制生成公私钥

$publicKeyString = "-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp1ffL+kUEedBLTzQrKU+
8oq9IZSUroxhmnWrXa1XMGtlbeVCHQNljujqwGuLELyk7i78cGczwCyGE2SVj9oI
tBzGn02fWZNCb3bHPv6ofliTvqYcZOFaFTWB+tTKuOmopCk/bgQVe7HC6+74s/3x
Q4tM1jVbNPYSY11++DLjEQ8KaA3pNJwoFTxER3GVEgmfhi5xUTTaBa5ZOIaNfsFr
0fGzvGbmRpqoIor6MlSxXbMO4k2pMzB7YJYYr7zRC28DoeJCj5XnXkq4XPIJzo8/
g79163dp0y9m7cDn4NfRDdBsFeHy6n+hKps6hSVf1z1ZtQtlfk0mRE/EchubDcuH
+QIDAQAB
-----END PUBLIC KEY-----";

$privateKeyString = “-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCnV98v6RQR50Et
PNCspT7yir0hlJSujGGadatdrVcwa2Vt5UIdA2WO6OrAa4sQvKTuLvxwZzPALIYT
ZJWP2gi0HMafTZ9Zk0Jvdsc+/qh+WJO+phxk4VoVNYH61Mq46aikKT9uBBV7scLr
7viz/fFDi0zWNVs09hJjXX74MuMRDwpoDek0nCgVPERHcZUSCZ+GLnFRNNoFrlk4
ho1+wWvR8bO8ZuZGmqgiivoyVLFdsw7iTakzMHtglhivvNELbwOh4kKPledeSrhc
8gnOjz+Dv3Xrd2nTL2btwOfg19EN0GwV4fLqf6EqmzqFJV/XPVm1C2V+TSZET8Ry
G5sNy4f5AgMBAAECggEAd5rFiV/EmXs4yVVzLEI7OG1S+oJQtmTdieFaZuzyqUfJ
Sf+W/lekKb1ts7PpxD+gfiCVCt2oTk1EUu4MO7GxkNIUYF3Ba+tli3dQt0SaNxum
FZhyKOQsV4ZT7WxTrFBM2XAlxsMie7M0xx6ZIUR6QTV56IxgMP1DbUOw8UKlqlV2
p3Vdckfjt2pWyLqM2yZUoC3+AjfqpJus/dpyIRGtLd8rLoFCrPgM2naEWxYCAeyI
CpHgzYCCAbWyXZOkFOWIFPm53ZDbdZpupzKjS29rYGjiZ7St6sdCegGoZ+aYeUwA
Bb1RKZjkBeLrxbuIZHlSbrBO12yE8gZ+VPzgSy1CVQKBgQDWHjj/7Yur/m+d9yJ0
9S14TK5KX3EX2cl46It8FMJEKTk1IhgYB6Dmk10pDrV2glJ3zLfwYeu82p9Zgswh
F34mU3o67medJ3OJP+/qHYvEm4WOKw1973v8GEQhqTvr7yPYVC/cRoyN49FKbKfC
sF7Scw7EaTObxtWMDJyaa+JDPwKBgQDIE3DhYzx1YahEHktYgVw9OaDdykzYZV2J
KO8rkAwS0oXY6yi2J1nCrq3N5Ro7PAMCESRabgAps7n2GazLNfrtG/DcH87M0kYz
AEwo1DvI3XVIAjiPmZXBeU2xp1o40OOxZXeHP3VzuU2ydyR6yp3Y2WCClmgf3Vuz
O1uGk2A+xwKBgCZzbPcAuJldarvqWoS4Vr8Ivi/a7dtDn/uXfxz8OVq2MHDLO5pt
HEbr5cnuu0WZ56dd2xZO71+Nvxn69B9pMZ0+Vm/oyjCdmhDmq3XWcngPGa/LKXQZ
IqHF1c5ZrsoSutQpYiLjhHAinj4IPyQmOhD+2oMJBVyPG2A4D5Nnlk1PAoGBAIXH
ognC3hEqzGVH0F+Ml82EdBD5DOsA1Es7KLj7J2eKht7lVqJ9q2ImhKaQkzqaRPSj
26fvt4Iq36QzxLtYC8FxllrJlfCUhUXi5AnE53jGw33zpjg2nNDyOEYavZQR8L2U
OBkiEHnhpJc5XRYR1vvBVevbgCIWVBODFA7nCkrPAoGAK2oIQ5SLu5OfAB4qcN6v
vHERc8JXGZWL/o2Z/4t0OX1X6NwDdAl87LCyQ6ab3dqmgemtjdd2Z9DDn2m9oPtO
yuNvlxYNiCqgsNyUCwy6Q1yy1fOvhiUJF8rkq4UTSeQ8gSrf8hf3ajHmzhA1r5B7
Y5MUPUHIS6ckWMTF+pAXAgQ=
-----END PRIVATE KEY-----”;

openssl_pkey_get_publicopenssl_pkey_get_private是PHP OpenSSL扩展提供的两个函数。

openssl_pkey_get_public函数用于获取公钥,它可以从一个证书文件或PEM格式的公钥字符串中提取公钥信息,并返回一个公钥资源

$publicKeyResource = openssl_pkey_get_public($publicKeyString);
$privateKeyResource = openssl_pkey_get_private($privateKeyString);

第3种;复制密钥存储为.pem文件后缀

$publicKeyString = file_get_contents('public.pem');
$privateKeyString = file_get_contents('private.pem');

p u b l i c K e y R e s o u r c e = o p e n s s l p k e y g e t p u b l i c ( publicKeyResource = openssl_pkey_get_public( publicKeyResource=opensslpkeygetpublic(publicKeyString);
p r i v a t e K e y R e s o u r c e = o p e n s s l p k e y g e t p r i v a t e ( privateKeyResource = openssl_pkey_get_private( privateKeyResource=opensslpkeygetprivate(privateKeyString);

第三步、RSA加解密

RSA加密

公钥加密 openssl_public_encrypt => 私钥解密 openssl_private_decrypt

私钥加密 openssl_private_encrypt => 公钥解密 openssl_public_decrypt

1. 公钥加密、私钥解密:
   - 使用公钥加密数据:发送方使用接收方的公钥对数据进行加密。
   - 使用私钥解密数据:只有拥有相应私钥的接收方才能使用私钥解密并获取原始数据。

2. 私钥加密、公钥解密:
   - 使用私钥加密数据:发送方使用自己的私钥对数据进行加密。
   - 使用公钥解密数据:接收方使用发送方的公钥来解密并获取原始数据。

<?php

// 待加密的数据
$data = “Hello, RSA!”;

// 使用公钥加密数据
openssl_public_encrypt($data, $encryptedWithPublicKey, $publicKey);

// 使用私钥解密数据
openssl_private_decrypt($encryptedWithPublicKey, $decryptedWithPrivateKey, $privateKey);

// 使用私钥加密数据
openssl_private_encrypt($data, $encryptedWithPrivateKey, $privateKey);

// 使用公钥解密数据
openssl_public_decrypt($encryptedWithPrivateKey, $decryptedWithPublicKey, $publicKey);

// 输出结果
echo "原始数据: " . $data . “\n”;
echo "公钥加密,私钥解密结果: " . $decryptedWithPrivateKey . “\n”;
echo "私钥加密,公钥解密结果: " . $decryptedWithPublicKey . “\n”;
?>

第四步、RSA签名以及验证签名

 
    /**
     * 构造签名
     * @param string $dataString 被签名数据
     * @return string
     */
    public function sign($dataString)
    {
    $signature = false;
    openssl_sign($dataString, $signature, $privKey);
    return base64_encode($signature);
}

/**
 * 验证签名
 * @param string $dataString 被签名数据
 * @param string $signString 已经签名的字符串
 * @return number 1签名正确 0签名错误
 */
public function verify($dataString, $signString)
{
  
    $signature = base64_decode($signString);
    $flg = openssl_verify($dataString, $signature, $PubKey);
    return $flg;
 }</pre></div>

第五步、封装完整代码 

<?php
class  RSA{
    protected $publicKey;
    protected $privateKey;
    //$type  1长类型 2完整key  3文件内完整key
    public function __construct($publicKey = '', $privateKey = '', $type=1){
        $this->setKey($publicKey, $privateKey, $type);
    }
public function setKey($publicKey = null, $privateKey = null, $type=1)
{
    if (!is_null($publicKey)) {
        $this-&gt;setupPubKey($publicKey, $type);
    }
    if (!is_null($privateKey)) {
        $this-&gt;setupPrivKey($privateKey, $type);
    }
}

private function setupPrivKey($privateKey, $type)
{
    if (is_resource($this-&gt;privateKey)) {
        return true;
    }

    if ($type == 1) {
        $pem = chunk_split($privateKey, 64, "\n");
        $pem = "-----BEGIN PRIVATE KEY-----\n" . $pem . "-----END PRIVATE KEY-----\n";
        $this-&gt;privateKey = openssl_pkey_get_private($pem);
    } elseif ($type == 2) {
        $this-&gt;privateKey = openssl_pkey_get_private($privateKey);
    } elseif ($type == 3) {
        $privateKeyString = file_get_contents($privateKey);
        $this-&gt;privateKey= openssl_pkey_get_private($privateKeyString);
    }

    return true;
}

private function setupPubKey($publicKey, $type=1)
{
    if (is_resource($this-&gt;publicKey)) {
        return true;
    }
    if ($type == 1) {
        $pem = chunk_split($publicKey, 64, "\n");
        $pem = "-----BEGIN PUBLIC KEY-----\n" . $pem . "-----END PUBLIC KEY-----\n";
        $this-&gt;publicKey = openssl_pkey_get_public($pem);
    } elseif ($type == 2) {
        $this-&gt;publicKey= openssl_pkey_get_public($publicKey);
    } elseif ($type == 3) {
        $pubString = file_get_contents($publicKey);
        $this-&gt;publicKey= openssl_pkey_get_public($pubString);
    }

    return true;
}

public function privEncrypt($data)
{
    if (!is_string($data) || empty($this-&gt;privateKey)) {
        return null;
    }

    $r = openssl_private_encrypt($data, $encrypted, $this-&gt;privateKey);
    if ($r === true) {
        return base64_encode($encrypted);
    }
    return null;
}

public function privDecrypt($encrypted)
{
    if (!is_string($encrypted) || empty($this-&gt;privateKey)) {
        return null;
    }

    $encrypted = base64_decode($encrypted);
    $r = openssl_private_decrypt($encrypted, $decrypted, $this-&gt;privateKey);
    if ($r === true) {
        return $decrypted;
    }
    return null;
}

public function pubEncrypt($data)
{
    if (!is_string($data) || empty($this-&gt;publicKey)) {
        return null;
    }

    $r = openssl_public_encrypt($data, $encrypted, $this-&gt;publicKey);
    if ($r === true) {
        return base64_encode($encrypted);
    }
    return null;
}

public function pubDecrypt($crypted)
{
    if (!is_string($crypted) || empty($this-&gt;publicKey)) {
        return null;
    }

    $crypted = base64_decode($crypted);
    $r = openssl_public_decrypt($crypted, $decrypted, $this-&gt;publicKey);
    if ($r === true) {
        return $decrypted;
    }
    return null;
}
/**
 * 构造签名
 * @param string $dataString 被签名数据
 * @return string
 */
public function sign($dataString)
{
    $signature = false;
    openssl_sign($dataString, $signature, $this-&gt;privateKey);
    return base64_encode($signature);
}

/**
 * 验证签名
 * @param string $dataString 被签名数据
 * @param string $signString 已经签名的字符串
 * @return number 1签名正确 0签名错误
 */
public function verify($dataString, $signString)
{

    $signature = base64_decode($signString);
    $flg = openssl_verify($dataString, $signature, $this-&gt;publicKey);
    return $flg;
}

public function __destruct()
{
    is_resource($this-&gt;privateKey) &amp;&amp; @openssl_free_key($this-&gt;privateKey);
    is_resource($this-&gt;publicKey) &amp;&amp; @openssl_free_key($this-&gt;publicKey);
}

}
/$publicKey = ‘MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKZ1mKTymRoGKnHiP1xAy4aiyt5r0BscCZnDAonCrMFZ4kBGriPNHxEaLr5lfBnMKw7k6i+2dsFPSEZooTvqtPUCAwEAAQ==’;
$privateKey = ‘MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEApnWYpPKZGgYqceI/XEDLhqLK3mvQGxwJmcMCicKswVniQEauI80fERouvmV8GcwrDuTqL7Z2wU9IRmihO+q09QIDAQABAkBunx3nGHXYjppsfn++7iyTd+I7+Agfy/0xWyB3rpEiGGgfemjcRFaeq5SC2vUNXsrEOY5gbUSQmFxH//Cym18NAiEA1z1cZx/Q9cbIjFPwp1a+K5CVFDXDcfbi/AQgAkVs0/cCIQDF+2fr23AoBslcOC4S0yAx94AbgxCntYuRqztxybsrcwIgMW86ZcT87TX2oaQ1xXk6vC68zqN6fBZEE7Wu1Fa1pAkCIElmOJP3qfAc/AAlj+dIwLHlqWgJwl3674CU9Bfui2bDAiEA0CKJpF8x7KANCcopEQC93PsbIztuML322LOfDV1Lw/k=’;
r s a = n e w R S A ( rsa = new RSA( rsa=newRSA(publicKey, $privateKey, 1);
/
$publicKeyString = “-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp1ffL+kUEedBLTzQrKU+
8oq9IZSUroxhmnWrXa1XMGtlbeVCHQNljujqwGuLELyk7i78cGczwCyGE2SVj9oI
tBzGn02fWZNCb3bHPv6ofliTvqYcZOFaFTWB+tTKuOmopCk/bgQVe7HC6+74s/3x
Q4tM1jVbNPYSY11++DLjEQ8KaA3pNJwoFTxER3GVEgmfhi5xUTTaBa5ZOIaNfsFr
0fGzvGbmRpqoIor6MlSxXbMO4k2pMzB7YJYYr7zRC28DoeJCj5XnXkq4XPIJzo8/
g79163dp0y9m7cDn4NfRDdBsFeHy6n+hKps6hSVf1z1ZtQtlfk0mRE/EchubDcuH
+QIDAQAB
-----END PUBLIC KEY-----”;

p r i v a t e K e y S t r i n g = " − − − − − B E G I N P R I V A T E K E Y − − − − − M I I E v Q I B A D A N B g k q h k i G 9 w 0 B A Q E F A A S C B K c w g g S j A g E A A o I B A Q C n V 98 v 6 R Q R 50 E t P N C s p T 7 y i r 0 h l J S u j G G a d a t d r V c w a 2 V t 5 U I d A 2 W O 6 O r A a 4 s Q v K T u L v x w Z z P A L I Y T Z J W P 2 g i 0 H M a f T Z 9 Z k 0 J v d s c + / q h + W J O + p h x k 4 V o V N Y H 61 M q 46 a i k K T 9 u B B V 7 s c L r 7 v i z / f F D i 0 z W N V s 09 h J j X X 74 M u M R D w p o D e k 0 n C g V P E R H c Z U S C Z + G L n F R N N o F r l k 4 h o 1 + w W v R 8 b O 8 Z u Z G m q g i i v o y V L F d s w 7 i T a k z M H t g l h i v v N E L b w O h 4 k K P l e d e S r h c 8 g n O j z + D v 3 X r d 2 n T L 2 b t w O f g 19 E N 0 G w V 4 f L q f 6 E q m z q F J V / X P V m 1 C 2 V + T S Z E T 8 R y G 5 s N y 4 f 5 A g M B A A E C g g E A d 5 r F i V / E m X s 4 y V V z L E I 7 O G 1 S + o J Q t m T d i e F a Z u z y q U f J S f + W / l e k K b 1 t s 7 P p x D + g f i C V C t 2 o T k 1 E U u 4 M O 7 G x k N I U Y F 3 B a + t l i 3 d Q t 0 S a N x u m F Z h y K O Q s V 4 Z T 7 W x T r F B M 2 X A l x s M i e 7 M 0 x x 6 Z I U R 6 Q T V 56 I x g M P 1 D b U O w 8 U K l q l V 2 p 3 V d c k f j t 2 p W y L q M 2 y Z U o C 3 + A j f q p J u s / d p y I R G t L d 8 r L o F C r P g M 2 n a E W x Y C A e y I C p H g z Y C C A b W y X Z O k F O W I F P m 53 Z D b d Z p u p z K j S 29 r Y G j i Z 7 S t 6 s d C e g G o Z + a Y e U w A B b 1 R K Z j k B e L r x b u I Z H l S b r B O 12 y E 8 g Z + V P z g S y 1 C V Q K B g Q D W H j j / 7 Y u r / m + d 9 y J 09 S 14 T K 5 K X 3 E X 2 c l 46 I t 8 F M J E K T k 1 I h g Y B 6 D m k 10 p D r V 2 g l J 3 z L f w Y e u 82 p 9 Z g s w h F 34 m U 3 o 67 m e d J 3 O J P + / q H Y v E m 4 W O K w 1973 v 8 G E Q h q T v r 7 y P Y V C / c R o y N 49 F K b K f C s F 7 S c w 7 E a T O b x t W M D J y a a + J D P w K B g Q D I E 3 D h Y z x 1 Y a h E H k t Y g V w 9 O a D d y k z Y Z V 2 J K O 8 r k A w S 0 o X Y 6 y i 2 J 1 n C r q 3 N 5 R o 7 P A M C E S R a b g A p s 7 n 2 G a z L N f r t G / D c H 87 M 0 k Y z A E w o 1 D v I 3 X V I A j i P m Z X B e U 2 x p 1 o 40 O O x Z X e H P 3 V z u U 2 y d y R 6 y p 3 Y 2 W C C l m g f 3 V u z O 1 u G k 2 A + x w K B g C Z z b P c A u J l d a r v q W o S 4 V r 8 I v i / a 7 d t D n / u X f x z 8 O V q 2 M H D L O 5 p t H E b r 5 c n u u 0 W Z 56 d d 2 x Z O 71 + N v x n 69 B 9 p M Z 0 + V m / o y j C d m h D m q 3 X W c n g P G a / L K X Q Z I q H F 1 c 5 Z r s o S u t Q p Y i L j h H A i n j 4 I P y Q m O h D + 2 o M J B V y P G 2 A 4 D 5 N n l k 1 P A o G B A I X H o g n C 3 h E q z G V H 0 F + M l 82 E d B D 5 D O s A 1 E s 7 K L j 7 J 2 e K h t 7 l V q J 9 q 2 I m h K a Q k z q a R P S j 26 f v t 4 I q 36 Q z x L t Y C 8 F x l l r J l f C U h U X i 5 A n E 53 j G w 33 z p j g 2 n N D y O E Y a v Z Q R 8 L 2 U O B k i E H n h p J c 5 X R Y R 1 v v B V e v b g C I W V B O D F A 7 n C k r P A o G A K 2 o I Q 5 S L u 5 O f A B 4 q c N 6 v v H E R c 8 J X G Z W L / o 2 Z / 4 t 0 O X 1 X 6 N w D d A l 87 L C y Q 6 a b 3 d q m g e m t j d d 2 Z 9 D D n 2 m 9 o P t O y u N v l x Y N i C q g s N y U C w y 6 Q 1 y y 1 f O v h i U J F 8 r k q 4 U T S e Q 8 g S r f 8 h f 3 a j H m z h A 1 r 5 B 7 Y 5 M U P U H I S 6 c k W M T F + p A X A g Q = − − − − − E N D P R I V A T E K E Y − − − − − " ; / / privateKeyString = "-----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCnV98v6RQR50Et PNCspT7yir0hlJSujGGadatdrVcwa2Vt5UIdA2WO6OrAa4sQvKTuLvxwZzPALIYT ZJWP2gi0HMafTZ9Zk0Jvdsc+/qh+WJO+phxk4VoVNYH61Mq46aikKT9uBBV7scLr 7viz/fFDi0zWNVs09hJjXX74MuMRDwpoDek0nCgVPERHcZUSCZ+GLnFRNNoFrlk4 ho1+wWvR8bO8ZuZGmqgiivoyVLFdsw7iTakzMHtglhivvNELbwOh4kKPledeSrhc 8gnOjz+Dv3Xrd2nTL2btwOfg19EN0GwV4fLqf6EqmzqFJV/XPVm1C2V+TSZET8Ry G5sNy4f5AgMBAAECggEAd5rFiV/EmXs4yVVzLEI7OG1S+oJQtmTdieFaZuzyqUfJ Sf+W/lekKb1ts7PpxD+gfiCVCt2oTk1EUu4MO7GxkNIUYF3Ba+tli3dQt0SaNxum FZhyKOQsV4ZT7WxTrFBM2XAlxsMie7M0xx6ZIUR6QTV56IxgMP1DbUOw8UKlqlV2 p3Vdckfjt2pWyLqM2yZUoC3+AjfqpJus/dpyIRGtLd8rLoFCrPgM2naEWxYCAeyI CpHgzYCCAbWyXZOkFOWIFPm53ZDbdZpupzKjS29rYGjiZ7St6sdCegGoZ+aYeUwA Bb1RKZjkBeLrxbuIZHlSbrBO12yE8gZ+VPzgSy1CVQKBgQDWHjj/7Yur/m+d9yJ0 9S14TK5KX3EX2cl46It8FMJEKTk1IhgYB6Dmk10pDrV2glJ3zLfwYeu82p9Zgswh F34mU3o67medJ3OJP+/qHYvEm4WOKw1973v8GEQhqTvr7yPYVC/cRoyN49FKbKfC sF7Scw7EaTObxtWMDJyaa+JDPwKBgQDIE3DhYzx1YahEHktYgVw9OaDdykzYZV2J KO8rkAwS0oXY6yi2J1nCrq3N5Ro7PAMCESRabgAps7n2GazLNfrtG/DcH87M0kYz AEwo1DvI3XVIAjiPmZXBeU2xp1o40OOxZXeHP3VzuU2ydyR6yp3Y2WCClmgf3Vuz O1uGk2A+xwKBgCZzbPcAuJldarvqWoS4Vr8Ivi/a7dtDn/uXfxz8OVq2MHDLO5pt HEbr5cnuu0WZ56dd2xZO71+Nvxn69B9pMZ0+Vm/oyjCdmhDmq3XWcngPGa/LKXQZ IqHF1c5ZrsoSutQpYiLjhHAinj4IPyQmOhD+2oMJBVyPG2A4D5Nnlk1PAoGBAIXH ognC3hEqzGVH0F+Ml82EdBD5DOsA1Es7KLj7J2eKht7lVqJ9q2ImhKaQkzqaRPSj 26fvt4Iq36QzxLtYC8FxllrJlfCUhUXi5AnE53jGw33zpjg2nNDyOEYavZQR8L2U OBkiEHnhpJc5XRYR1vvBVevbgCIWVBODFA7nCkrPAoGAK2oIQ5SLu5OfAB4qcN6v vHERc8JXGZWL/o2Z/4t0OX1X6NwDdAl87LCyQ6ab3dqmgemtjdd2Z9DDn2m9oPtO yuNvlxYNiCqgsNyUCwy6Q1yy1fOvhiUJF8rkq4UTSeQ8gSrf8hf3ajHmzhA1r5B7 Y5MUPUHIS6ckWMTF+pAXAgQ= -----END PRIVATE KEY-----"; // privateKeyString="BEGINPRIVATEKEYMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCnV98v6RQR50EtPNCspT7yir0hlJSujGGadatdrVcwa2Vt5UIdA2WO6OrAa4sQvKTuLvxwZzPALIYTZJWP2gi0HMafTZ9Zk0Jvdsc+/qh+WJO+phxk4VoVNYH61Mq46aikKT9uBBV7scLr7viz/fFDi0zWNVs09hJjXX74MuMRDwpoDek0nCgVPERHcZUSCZ+GLnFRNNoFrlk4ho1+wWvR8bO8ZuZGmqgiivoyVLFdsw7iTakzMHtglhivvNELbwOh4kKPledeSrhc8gnOjz+Dv3Xrd2nTL2btwOfg19EN0GwV4fLqf6EqmzqFJV/XPVm1C2V+TSZET8RyG5sNy4f5AgMBAAECggEAd5rFiV/EmXs4yVVzLEI7OG1S+oJQtmTdieFaZuzyqUfJSf+W/lekKb1ts7PpxD+gfiCVCt2oTk1EUu4MO7GxkNIUYF3Ba+tli3dQt0SaNxumFZhyKOQsV4ZT7WxTrFBM2XAlxsMie7M0xx6ZIUR6QTV56IxgMP1DbUOw8UKlqlV2p3Vdckfjt2pWyLqM2yZUoC3+AjfqpJus/dpyIRGtLd8rLoFCrPgM2naEWxYCAeyICpHgzYCCAbWyXZOkFOWIFPm53ZDbdZpupzKjS29rYGjiZ7St6sdCegGoZ+aYeUwABb1RKZjkBeLrxbuIZHlSbrBO12yE8gZ+VPzgSy1CVQKBgQDWHjj/7Yur/m+d9yJ09S14TK5KX3EX2cl46It8FMJEKTk1IhgYB6Dmk10pDrV2glJ3zLfwYeu82p9ZgswhF34mU3o67medJ3OJP+/qHYvEm4WOKw1973v8GEQhqTvr7yPYVC/cRoyN49FKbKfCsF7Scw7EaTObxtWMDJyaa+JDPwKBgQDIE3DhYzx1YahEHktYgVw9OaDdykzYZV2JKO8rkAwS0oXY6yi2J1nCrq3N5Ro7PAMCESRabgAps7n2GazLNfrtG/DcH87M0kYzAEwo1DvI3XVIAjiPmZXBeU2xp1o40OOxZXeHP3VzuU2ydyR6yp3Y2WCClmgf3VuzO1uGk2A+xwKBgCZzbPcAuJldarvqWoS4Vr8Ivi/a7dtDn/uXfxz8OVq2MHDLO5ptHEbr5cnuu0WZ56dd2xZO71+Nvxn69B9pMZ0+Vm/oyjCdmhDmq3XWcngPGa/LKXQZIqHF1c5ZrsoSutQpYiLjhHAinj4IPyQmOhD+2oMJBVyPG2A4D5Nnlk1PAoGBAIXHognC3hEqzGVH0F+Ml82EdBD5DOsA1Es7KLj7J2eKht7lVqJ9q2ImhKaQkzqaRPSj26fvt4Iq36QzxLtYC8FxllrJlfCUhUXi5AnE53jGw33zpjg2nNDyOEYavZQR8L2UOBkiEHnhpJc5XRYR1vvBVevbgCIWVBODFA7nCkrPAoGAK2oIQ5SLu5OfAB4qcN6vvHERc8JXGZWL/o2Z/4t0OX1X6NwDdAl87LCyQ6ab3dqmgemtjdd2Z9DDn2m9oPtOyuNvlxYNiCqgsNyUCwy6Q1yy1fOvhiUJF8rkq4UTSeQ8gSrf8hf3ajHmzhA1r5B7Y5MUPUHIS6ckWMTF+pAXAgQ=ENDPRIVATEKEY";//rsa = new RSA($publicKeyString, $privateKeyString, 2);
$rsa = new RSA(“public.pem”, “private.pem”, 3);
echo “私钥加密 公钥解密”;
echo “<br/>”;
$s = $rsa->privEncrypt(“abc”);
echo KaTeX parse error: Expected 'EOF', got '&' at position 5: rsa-&̲gt;pubDecrypt(s);
echo “<br/>”;
echo “公钥加密,私钥解密”;
echo “<br/>”;
$d = $rsa->pubEncrypt(“dfg”);
echo KaTeX parse error: Expected 'EOF', got '&' at position 5: rsa-&̲gt;privDecrypt(d);
echo “<br/>”;
echo “签名”;
echo “<br/>”;
$str=“a=1&b=2”;
s i g n = sign= sign=rsa->sign($str);
echo $sign;
r e s 6 = res6= res6=rsa->verify( s t r , str, str,sign);
echo “<br/>”;
echo “验证签结果:”.$res6;

以上就是PHP三种方式读取RSA密钥加解密、签名验签完整教程的详细内容,更多关于PHP RSA密钥的资料请关注网赚博客http://www.piaodoo.com/其它相关文章!

                        友情连接:  

茂名一技http://www.szsyby.net/


茂名一技http://www.enechn.com/


美文集http://www.tpyjn.cn/


手游排行前十名http://www.bjkhrx.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值