php mcrypt_decrypt()函数如何使用

发布时间:2023-01-14 10:21:56 作者:iii
来源:亿速云 阅读:108

这篇“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 并返回明文。

参数:

返回值:

使用示例:

<?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()函数如何使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

推荐阅读:
  1. 强制360浏览器选用IE9内核,以便支持HTML5,jque
  2. 从零开始完整搭建LNMP环境+WordPress部署

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php mcrypt_decrypt()

上一篇:Go语言如何拼接字符串

下一篇:Go语言字符串如何转为数组

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》