今、多くのプロジェクトは、私たちが覚えていて使いやすい、次のコードを仕上げている、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