中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php mcrypt_decrypt()函數如何使用

發布時間:2023-01-14 10:21:56 來源:億速云 閱讀:123 作者:iii 欄目:編程語言

這篇“php mcrypt_decrypt()函數如何使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“php mcrypt_decrypt()函數如何使用”文章吧。

在php中,mcrypt_decrypt()函數用于使用給定參數解密密文,語法“mcrypt_decrypt($cipher,$key,$data,$mode,$iv)”;參數“$key”是數據加密密鑰,“$data”是使用給定的“$cipher”和“$mode”解密的數據。

php mcrypt_decrypt()函數

mcrypt_decrypt — 使用給定參數解密密文,語法格式:

mcrypt_decrypt(
    string $cipher,
    string $key,
    string $data,
    string $mode,
    string $iv = ?
): string|false

可以解密 data 并返回明文。

參數:

  • cipher

    MCRYPT_ciphername 常量中的一個,或者是字符串值的算法名稱。

  • key

    數據加密密鑰。 如果密鑰長度不是加解密算法能夠支持的有效長度, 那么會產生警告并且返回 false

  • data

    要使用給定的 cipher 和 mode 解密的數據。 如果數據大小不是 n * 分組大小,則在其后追加 '\0' 來補齊。

  • mode

    MCRYPT_MODE_modename 常量中的一個,或以下字符串中的一個:"ecb","cbc","cfb","ofb","nofb" 和 "stream"。

  • iv

    用于CBC、CFB、OFB模式下的初始化,以及STREAM模式下的一些算法。如果鏈接模式不支持提供的 IV 大小,或者沒有提供 IV,但鏈接模式需要一個,則該函數將發出警告并返回FALSE。

返回值:

  • 以字符串格式返回解密后的數據, 或者在失敗時返回 false。

使用示例:

<?php
    # --- 加密 ---

    # 密鑰應該是隨機的二進制數據,
    # 開始使用 scrypt, bcrypt 或 PBKDF2 將一個字符串轉換成一個密鑰
    # 密鑰是 16 進制字符串格式
    $key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");
    
    # 顯示 AES-128, 192, 256 對應的密鑰長度:
    #16,24,32 字節。
    $key_size =  strlen($key);
    echo "Key size: " . $key_size . "n";
    
    $plaintext = "This string was AES-256 / CBC / ZeroBytePadding encrypted.";

    # 為 CBC 模式創建隨機的初始向量
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    

    # 創建和 AES 兼容的密文(Rijndael 分組大小 = 128)
    # 僅適用于編碼后的輸入不是以 00h 結尾的
    # (因為默認是使用 0 來補齊數據)
    $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key,
                                 $plaintext, MCRYPT_MODE_CBC, $iv);

    # 將初始向量附加在密文之后,以供解密時使用
    $ciphertext = $iv . $ciphertext;
    
    # 對密文進行 base64 編碼
    $ciphertext_base64 = base64_encode($ciphertext);

    echo  $ciphertext_base64 . "n";

    # === 警告 ===

    # 密文并未進行完整性和可信度保護,
    # 所以可能遭受 Padding Oracle 攻擊。
    
    # --- 解密 ---
    
    $ciphertext_dec = base64_decode($ciphertext_base64);
    
    # 初始向量大小,可以通過 mcrypt_get_iv_size() 來獲得
    $iv_dec = substr($ciphertext_dec, 0, $iv_size);
    
    # 獲取除初始向量外的密文
    $ciphertext_dec = substr($ciphertext_dec, $iv_size);

    # 可能需要從明文末尾移除 0
    $plaintext_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key,
                                    $ciphertext_dec, MCRYPT_MODE_CBC, $iv_dec);
    
    echo  $plaintext_dec . "n";
?>

以上例程會輸出:

Key size: 32
ENJW8mS2KaJoNB5E5CoSAAu0xARgsR1bdzFWpEn+poYw45q+73az5kYi4j+0haevext1dGrcW8Qi59txfCBV8BBj3bzRP3dFCp3CPQSJ8eU=
This string was AES-256 / CBC / ZeroBytePadding encrypted.

以上就是關于“php mcrypt_decrypt()函數如何使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌苏市| 临邑县| 河池市| 任丘市| 西乌珠穆沁旗| 宁国市| 宜宾市| 宁城县| 高州市| 鄂托克旗| 淳安县| 阿克苏市| 龙川县| 建阳市| 梓潼县| 宁波市| 山东省| 德江县| 右玉县| 勃利县| 尉犁县| 克拉玛依市| 秦安县| 赤城县| 肥城市| 宜春市| 长丰县| 龙江县| 吉林省| 曲周县| 滨州市| 罗定市| 启东市| 姚安县| 舞阳县| 景东| 上林县| 读书| 新密市| 昂仁县| 枣庄市|