PHPのAES暗号化と復号化、MCRYPT_ENCRYPTとopenssl_encrypt

以下のバージョンphp7.1

  / * 
     * MCRYPT_ENCRYPT加密
     * php7.1开始被丢弃可以使用openssl_encrypt 
     * / 
    関数AES_ENCRYPT($コンテンツ){ 
        $のPrivateKey = "abcdef1234567890"。
        $ IV = "helloworld123456"。
        $コンテンツ=の$ this - > pkcs7_pad($コンテンツ); //支持openssl_decrypt解密、
        $暗号化= MCRYPT_ENCRYPT(MCRYPT_RIJNDAEL_128、$のPrivateKey、$コンテンツ、MCRYPT_MODE_CBC、$ IV); 
        $ based_encrypted = BASE64_ENCODE($暗号化されました)。
        $ based_encryptedを返します。
    } 
/ * * MCRYPT_ENCRYPT解密 * / 関数AES_DECRYPT($コンテンツ){ $のPrivateKey = "abcdef1234567890"。 $ IV = "helloworld123456"。 $コンテンツ= BASE64_DECODE($コンテンツ); $ = MCRYPT_DECRYPT(MCRYPT_RIJNDAEL_128、$のPrivateKey、$コンテンツ、MCRYPT_MODE_CBC、$ IV)で暗号化されました。 暗号化された$を返します。 } 関数pkcs7_pad($列str){ $ LEN = mb_strlen($ STR、 '8ビット')。 $のC = 16 - ($%16 LEN)。 。$ strの=におけるSTR_Repeat(CHR($ c)は、$ c)は、 $ strの返します。 }

  

php7.1が使用されるようになったopenssl_encrypt破棄することができます

  / ** 
     *解読文字列
     * @param文字列$データ列
     * @param文字列$キーの暗号化キー
     * @return文字列
     * / 
    関数decryptWithOpenssl($データ、キー$、$のIV){ 
        リターンopenssl_decrypt(BASE64_DECODE($データ) 、 "AES-CBC-128"、$キー、OPENSSL_RAW_DATA、$のIV); 
    } 

    / ** 
     *暗号化された文字列
     *サイト:https://segmentfault.com/q/1010000009624263 
     * @paramデータ列の文字列$ 
     * @param文字列$キーの暗号化キー
     * @return文字列
     * / 
    関数encryptWithOpenssl($データ、キー$、$のIV){ 
        (openssl_encrypt($データ、 "AES-CBC-128"、$キー、OPENSSL_RAW_DATA、$ IV)BASE64_ENCODEを返します); 
    }

  

使用

    ヘッダ( "コンテンツタイプ:テキスト/ HTML;のcharset = UTF-8"); 
        $のPrivateKey = "abcdef1234567890"; 
        $ IV = "helloworld123456"; 
        エコー"の<pre>"; 
        $コンテンツ=「章暗号化テスト121212ksjflkdjslfsdjfljsセクション概要テスト終了「; 
        $ aesencrypt = AES_ENCRYPT($コンテンツ); 
        "AES_ENCRYPT暗号化:"エコー($ aesencrypt);. 
        エコー""; 
        $ = encrypt_openssl AES_DECRYPT($ aesencrypt); 
        エコー"AES_DECRYPT復号:." ($のencrypt_openssl); 
        ";"エコー
        $ encrypt_openssl = decryptWithOpenssl($ aesencrypt、のPrivateKey $、$ IV); 
        "openssl_encrypt解読:"エコー($のencrypt_openssl);.
        "<BR/>"エコー;


        $ encrypt_openssl = encryptWithOpenssl($コンテンツ、$のPrivateKey、$ IV); 
        。 "openssl_encrypt加密:"エコー($のencrypt_openssl)。
        "<BR/>"エコー; 
        $ decrypt_openssl = decryptWithOpenssl($ encrypt_openssl、$のPrivateKey、$ IV); 
        。 "openssl_encrypt解密:"エコー($のdecrypt_openssl)。
        "<BR/>"エコー; 
        $ decrypt_openssl = AES_DECRYPT($のencrypt_openssl)。
        。 "AES_DECRYPT解密:"エコー($のdecrypt_openssl)。
        "<BR/>"エコー;

  

 

おすすめ

転載: www.cnblogs.com/binblogs/p/11719717.html