男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站

mcrypt_encrypt

(PHP 4 >= 4.0.2, PHP 5, PHP 7 < 7.2.0, PECL mcrypt >= 1.0.0)

mcrypt_encrypt使用給定參數加密明文

警告

本函數已自 PHP 7.1.0 起廢棄。強烈建議不要使用本函數。

說(shuō)明

mcrypt_encrypt(
    string $cipher,
    string $key,
    string $data,
    string $mode,
    string $iv = ?
): string

加密數據并返回密文。

參數

cipher

MCRYPT_ciphername 常量中的一個(gè),或者是字符串值的算法名稱(chēng)。

key

加密密鑰。 如果密鑰長(cháng)度不是該算法所能夠支持的有效長(cháng)度,則函數將會(huì )發(fā)出警告并返回 false

data

使用給定的 ciphermode 加密的數據。 如果數據長(cháng)度不是 n*分組大小,則在其后使用 '\0' 補齊。

返回的密文長(cháng)度可能比 data 更大。

mode

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

iv

Used for the initialization in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If the provided IV size is not supported by the chaining mode or no IV was provided, but the chaining mode requires one, the function will emit a warning and return false.

返回值

以字符串方式返回密文, 或者在失敗時(shí)返回 false。

更新日志

版本 說(shuō)明
5.6.0 不再接受無(wú)效長(cháng)度的 key and iv 參數。 如果參數長(cháng)度無(wú)效,則 mcrypt_decrypt() 函數會(huì )產(chǎn)生警告并且返回 false。 之前版本中,對于長(cháng)度不足的密鑰和初始向量會(huì )在其后補齊 '\0' 使其達到有效長(cháng)度。

范例

示例 #1 mcrypt_encrypt() 例程

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

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

    
# 為 CBC 模式創(chuàng )建隨機的初始向量
    
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128MCRYPT_MODE_CBC);
    
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);
    

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

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

    echo  
$ciphertext_base64 "\n";

    
# === 警告 ===

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

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

以上例程會(huì )輸出:

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

參見(jiàn)

男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站