在php中,mcrypt_decrypt()函数用于使用给定参数解密密文,语法“mcrypt_decrypt($cipher,$key,$data,$mode,$iv)”;参数“$key”是数据加密密钥,“$data”是使用给定的“$cipher”和“$mode”解密的数据。

本教程操作环境:windows7系统、PHP8版、DELL G3电脑
php mcrypt_decrypt()函数
mcrypt_decrypt — 使用给定参数解密密文,语法格式:
mcrypt_decrypt(
string $cipher,
string $key,
string $data,
string $mode,
string $iv = ?
): string|false可以解密 data 并返回明文。
立即学习“PHP免费学习笔记(深入)”;
参数:
cipher
MCRYPT_ciphername 常量中的一个,或者是字符串值的算法名称。
key
数据加密密钥。 如果密钥长度不是加解密算法能够支持的有效长度, 那么会产生警告并且返回 false
data
Zend框架2是一个开源框架,使用PHP 5.3 +开发web应用程序和服务。Zend框架2使用100%面向对象代码和利用大多数PHP 5.3的新特性,即名称空间、延迟静态绑定,lambda函数和闭包。 Zend框架2的组成结构是独一无二的;每个组件被设计与其他部件数的依赖关系。 ZF2遵循SOLID面向对象的设计原则。 这样的松耦合结构可以让开发人员使用他们想要的任何部件。我们称之为“松耦合”
344
要使用给定的 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视频教程》
以上就是php mcrypt_decrypt()函数怎么用的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号