PHP RSA公開鍵と秘密鍵の暗号化と認証の使用

今、多くのプロジェクトは、私たちが覚えていて使いやすい、次のコードを仕上げている、RSAの暗号化と復号化と検証関連の技術に使用されます。

[署名と検証]

1つの // 获得签名
2  関数 getSign($データ){
 3      $ PEM = 'my_rsa_private_key.pem' 4      $のPrivateKey = openssl_get_privatekey(のfile_get_contents$のPEM ))。
5      openssl_sign($データ$記号$のPrivateKey )。
6      openssl_free_key($のPrivateKey )。
7      リターン BASE64_ENCODE$記号)。
8  }
 9  // 验证签名
10  機能checkSign($データ$記号){
 11      $ PEM = 'my_rsa_public_key.pem' 12      $公開 = openssl_get_publickey(のfile_get_contents$のPEM ));
13      $結果 = openssl_verify($データ$記号$公開)。
14      openssl_free_key($公開)。
15      戻り ます$ result ;
16  }
 17  $ signData = 'PHP-RSA' 18  $ getSign = getSign($データ);
 19  $ checkSign = checkSign($データBASE64_DECODE$記号)); 
20は、 エコー '署名データを'。$ SignData ; 21れる エコー '得署名:'。$ GetSign ; 22は、 エコー '署名を検証する:'。$ CheckSign ;

結果は次の通りである:
署名データ:PHP-RSA
署名結果:LOVAjWTgHeUvJIK0scVOQO2VlId + 1qEuUc70cb7Z / dyMONpheldefkKJXZDF9HelTz / UnwEd00Tre698VGN1IX / sV7WTQJFCY + ypArfNx9mCzaEhMt0U60yGkIPh8wXqNG10YhgzPIw3Lvd / 36FnRlTBXOZeJMbxFxhdJmSdeOQ =
署名を検証する:1

[]データの暗号化と復号化

1  // 加密数据
2  関数 sslEncrypt($源$型$キー){
 3      $ MAXLENGTH = 117 4      $出力 = '' ;
5      しばらく$ソース){
 6          $入力 = SUBSTR$源、0、$のMAXLENGTH )。
7          $源 = SUBSTR$源$のMAXLENGTH )。
8          もし$タイプ == 'プライベート' ){
9              $ OK = openssl_private_encrypt($入力暗号化された$$キー)。
10          } {
 11              $ OK = openssl_public_encrypt($入力暗号化された$$キー12          }
 13          $出力 = $暗号化されました14      }
 15      リターン $出力16  }
 17  // 解密数据
18  機能 sslDecrypt($源$タイプ$キー){
 19      $ MAXLENGTH = 128 20      $出力 = '' ;
21      一方$ソース){
 22          $入力 = SUBSTR$源、0、$のMAXLENGTH )。
23          $のソース = SUBSTR$源$のMAXLENGTH )。
24          であれば$タイプ == 'プライベート' ){
 25              $ OK = openssl_private_decrypt($入力$うち$キー)。
26          } {
 27は             $ OK = openssl_public_decrypt($入力$うち$キー)。
28          }
 29          $出力 =。$アウト30      }
 31      リターン $出力32  }
 33  $データ = 'PHP-RSA' 34  $のPrivateKey = openssl_get_privatekey(のfile_get_contents( 'my_rsa_private_key.pem' ));
35  $公開 = openssl_get_publickey(のfile_get_contents( 'my_rsa_public_key.pem' ));
 36  $記号 = BASE64_ENCODE(sslEncrypt($データ、 'プライベート' $のPrivateKey ));
 37 [  $ Jiemi = sslDecrypt(BASE64_DECODE$記号)、 'パブリック'は、公開鍵を$
38であります$データ;.: '暗号化されたデータ'エコー
。;:39のエコー'の暗号化結果' $サイン
$ jiemi ;.: 'データを復号化する' 40エコー

:次のように結果が
暗号化されたデータ:PHP-RSA
暗号の結果:aMCpl34vXbofR7a3OPPLElQg6jwG + xbdIsdfYGeVPtIhVp0INMu / 0p9M8hを+ JiBBmGL / WVY9ynbrvNH6QtLXDoW23rm6EWPPKn53EIqt / 9jM / fDX8EyaAvhIuaSJ2Q7dxz4hNF + Ykm0XZ5ytsCB71zYVPYfaHyo3Xk + VkZ / JvznE =
復号データ:PHP-RSA

おすすめ

転載: www.cnblogs.com/firstlady/p/11327204.html