文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

php mcrypt_decrypt()函数如何使用

2023-07-05 00:30

关注

这篇“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: 32ENJW8mS2KaJoNB5E5CoSAAu0xARgsR1bdzFWpEn+poYw45q+73az5kYi4j+0haevext1dGrcW8Qi59txfCBV8BBj3bzRP3dFCp3CPQSJ8eU=This string was AES-256 / CBC / ZeroBytePadding encrypted.

以上就是关于“php mcrypt_decrypt()函数如何使用”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯