MCrypt rijndael-256 到 OpenSSL aes-256-ecb 转换

2023-11-27

由于 Mcrypt 已被弃用,我想在代码中使用 OpenSSL,因为我们已经在服务器中使用 php 7.2.4。

我使用以下代码进行加密/解密。

//加密

function encrypt($text, $salt='') {
    if ($text == "") {
        return "";
    }

    if ($salt == "") {
        $salt = 'DiAo74dOO09T48YESmuvbS0T';
    }

    return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}

//解密

function decrypt($text, $salt = '') {
    if ($text == "") {
        return "";
    }

    if ($salt == "") {
        $salt = 'DiAo74dOO09T48YESmuvbS0T';
    }

    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}

AFdT9sa81krHkp/GoYCSwh7/lZn/gLZLHJSldi5/QCU=我使用上面的加密函数加密了这个字符串,但我希望它使用它来解密OPENSSL。我使用以下代码来解密它:

$string = 'AFdT9sa81krHkp/GoYCSwh7/lZn/gLZLHJSldi5/QCU=';   
$output = false;
$secret_key = 'DiAo74dOO09T48YESmuvbS0T';   
$secret_iv1 = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-256-ECB'));
$secret_iv = bin2hex($secret_iv1);
$key = hash('sha256', $secret_key);    
$iv = substr(hash('sha256', $secret_iv), 0, 16);

$output = base64_encode(openssl_encrypt($string, 'aes-256-ecb', $key, OPENSSL_RAW_DATA));

我想要解密的输出为:durhs-14767-w0163j1-89047预先感谢您的回复。


可悲的是,你走错了路。

参考:

http://php.net/manual/en/function.mcrypt-encrypt.php#117667

MCRYPT_RIJNDAEL_256 不是 AES-256,它是 AES-256 的不同变体 Rijndael 分组密码。

https://en.wikipedia.org/wiki/Advanced_Encryption_Standard

AES 是 Rijndael 的变体,其块大小固定为 128 位, 密钥大小为 128、192 或 256 位。相比之下,Rijndael 规范本身是用块和密钥大小指定的,这些大小可以是 32 位的任意倍数,最小为 128,最大为 256 位。

因此您无法使用 OpenSSL 的 AES-256 来解密 MCrypt 的输出。

一些可能的方法:

  1. 继续通过 PECL 的 mcrypt 扩展使用 mcrypt(幸运的是,它仍然存在),直到您可以完全替换旧数据。

  2. 用 PHP 重写正确的 RIJNDAEL-256 密码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MCrypt rijndael-256 到 OpenSSL aes-256-ecb 转换 的相关文章

  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • 如何从 Laravel 中的表中选择所有列名称?

    我试图从表中获取所有列名Teller 功能 public function getTableColumns tables return DB select DB raw SELECT COLUMN NAME DATA TYPE COLUMN
  • 检查php中位字段是否打开的正确方法是什么

    检查位字段是否打开的正确方法是什么 在 php 中 我想检查来自 db mysql 的位字段是否打开 这是正确的方法吗 if bit 1 还有其他方法吗 我看到有人使用代码ord http jameslow com 2008 08 12 m
  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de
  • 简单的 PHP 条件帮助: if($Var1 = in list($List) and $Cond2) - 这可能吗?

    这是一个可能的功能吗 我需要检查一个变量是否存在于我需要检查的变量列表中 并且 cond2 是否为 true 例如 if row name 1 2 3 Cond2 doThis 它对我不起作用 我在复制粘贴中更改的只是我的列表和变量名称 i
  • 通过 Ajax 加载内容时,WORDPRESS 音频播放器未加载,MediaElement.js 未应用

    我正在创建一个 WordPress 主题 当我使用 ajax 加载内容时 它不会将 MediaElements js 应用于我的音频播放器 因此不会显示音频 我认为这是因为 MediaElement js 加载了 wp footer 并且此
  • 删除PHP字符串中所有不匹配的字符?

    我有一个文本 我想从中删除所有不属于以下字符的字符 所需字符 0123456789 abcdefghijklmnopqrstuvwxyz n 最后一个是我确实想保留的 n 换行符 要匹配除列出的字符之外的所有字符 请使用反转字符集 http
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 如何解压 PHP/Lumen/Laravel 的 gzip 请求?

    我收到来自第三方的 gzip 编码文本请求 1mb 所以这是有道理的 我的测试路线 router gt post testgzip function Illuminate Http Request request decompressed
  • 如何检查PHP变量是否包含非数字?

    我只是想知道检查 PHP 变量中是否有非数字的方法以及它是否也检测字符之间的空格 需要确保我的表单字段中没有添加任何奇怪的内容 提前致谢 如果您的意思是您只想要一个包含数字的值 那么您可以使用ctype digit http php net
  • 将“php”作为 shell 脚本执行时的自定义 php.ini 文件

    我在跑php作为 shell 脚本 我不确定 shell脚本 是否正确 该文件以 usr bin php 这很好用 但 MongoDB 类没有正确加载php ini文件 具有extension mongo so 未使用 我该如何使用它tha
  • 从 smarty 访问 PHP 文件的变量(本地或全局)

    我有一个 php 文件 其中包含一些本地和全局变量 例如 foo 从此文件中调用 smarty 对象 如何在不更改 PHP 文件的情况下从 smarty 脚本访问 foo Thanks 如果你有一个名为 BASE 的常量变量 并且定义如下
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 PHP 中使用 phpseclib 时出现 RSA 问题

    我正在尝试在 phpseclib 中使用 RSA 实现 我认为在函数中执行一次代码并重新使用该函数会更容易 当我尝试向代码发送短信时 我收到一条错误消息 提示 解密错误 测试还让我意识到每次代码运行时密文都是不同的 所以我显然在那里做错了什
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主

随机推荐

  • Android ImageAdapter 与 Fragment 中的 Gridview

    我有一个带有 gridview 的适配器 它作为一个 Activity 工作 我现在尝试将其放入片段中并转换内容 但它不起作用 当我在 Activity 中包含 IconFragmentSystem 时 当我尝试打开 Activity 时
  • spawnSync /bin/sh ENOBUFS

    Error spawnSync bin sh ENOBUFS 在执行以下行时 非系统地在我的 NodeJs 应用程序中生成 child process execSync cd tmp myFolder tar xjf myArchive t
  • 发送到应用程序的 CTRL-C 单元测试

    I am developing an application handling CTRL C I am producing a signal handler to shut down gracefully threads and other
  • Google Play 内容政策 [关闭]

    Closed 这个问题是无关 目前不接受答案 我刚刚收到一封来自 Google 的电子邮件 告诉我我的一个应用违反了开发者条款 我有 7 天的时间来遵守 他们是这么说的 警告原因 违反内容的垃圾邮件规定 政策 请勿发布重复内容 产品描述不应
  • 查找数组中出现次数最多的元素 [java]

    我必须找到双精度数组中出现次数最多的元素 我是这样做的 int max 0 for int i 0 i lt array length i int count 0 for int j 0 j lt array length j if arr
  • 如何将 Swift 对象序列化或转换为 JSON?

    下面这个类 class User NSManagedObject NSManaged var id Int NSManaged var name String 需要转换为 id 98 name Jon Doe 我尝试手动将对象传递给函数 该
  • 使用 HTTP Post 从客户端流式传输数据

    我想将数据从客户端流式传输到服务器 我的应用程序将音频数据流式传输到服务器 当我开始流式传输时 我不知道音频会持续多长时间 我想通过在记录数据时传输数据来减少延迟 一旦所有数据上传完毕 我就会对其进行处理 所以 我想要的是一个 HTTP P
  • 如何在 UWP 应用中保留 TextBlock 的空白

    如果您只是将 TextBlock 中的 Text 属性的值设置为 例子 请注意 此处有 3 个空格end这个字符串 TextBlock 在 UI 中显示的只是 Example 并且在网上搜索解决方案后 发现有一种方法可以解决这个问题
  • 如何用 C++ 读取和解析 CSV 文件?

    我需要在 C 中加载和使用 CSV 文件数据 此时它实际上可以只是一个逗号分隔的解析器 即不用担心转义新行和逗号 主要需要是一个逐行解析器 每次调用该方法时 它将返回下一行的向量 我发现这篇文章看起来很有前途 http www boost
  • javascript,在开始颜色和结束颜色之间选择一个随机的十六进制颜色

    有什么快速的方法可以实现这一点吗 例如 起始颜色 EEEEEE 和结束颜色 FFFFFF 会产生类似 FEFFEE 的颜色 当然 十六进制被编码为数字 但要使其有意义 您必须首先提取 rgb 组件 function rgb string r
  • php邮件的smtp配置

    我使用 php 邮件功能从我的网站发送邮件 但现在它不起作用 我联系了我们的托管团队 然后他们告诉我使用 smtp 因为他们对服务器做了一些更改 我不知道该怎么做 当前代码 带有 php 邮件功能 如下 任何人都可以帮助我进行与此相关的更改
  • Go 闭包在内存中是如何布局的?

    有关闭包的一般解释 请参见JavaScript 闭包如何工作 Go 闭包到底是如何在内存中布局的 以以下函数为例 type M int func m M Adder amount int func return func m m amoun
  • FileHelpers 和 CSV:当记录可以无限水平扩展时该怎么办

    我正在尝试使用 FileHelpers 解析这种类型的 CSV 文件 Tom 1 2 3 4 5 6 7 8 9 10 Steve 1 2 3 Bob 1 2 3 4 5 6 Cthulhu 1 2 3 4 5 Greg 1 2 3 4 5
  • 使用 Scikit Learn 的 DictVectorizer 时出现 toarray 内存错误

    我正在尝试对我的数据实施 SelectKBest 算法 以从中获得最佳功能 为此 我首先使用 DictVectorizer 预处理数据 该数据由 1061427 行和 15 个特征组成 每个功能都有许多不同的值 我相信由于高基数我遇到了内存
  • java 电话号码验证

    这是我的问题 为电话号码创建一个构造函数 给定本地号码的 xxx xxx xxxx 或 xxx xxxx 形式的字符串 如果格式无效 则抛出异常 所以我想使用正则表达式来验证它 但我不知道我做得是否正确 另外我必须抛出什么样的异常 我需要创
  • Gitlab 屏蔽变量

    我似乎无法屏蔽 Gitlab CI 上的变量 我正在尝试上传 ssh 私钥 但无论我做什么 它都拒绝屏蔽它 那是我正在尝试存储私钥在 Gitlab 上供我的生产服务器拥有公钥的 Gitlab 运行程序使用 我不是问如何在构建过程中将其介绍给
  • 詹金斯作业重启后消失

    我在 Jenkins 1 5 31 中遇到这个奇怪的问题 我已经配置了 Maven 作业 我仍然在 Jenkins Home 目录中看到它 尽管我仍然可以通过默认端口 8080 访问 Jenkins 但我的 Jenkins Windows
  • 如何在gdb中打印-0x4(%rbp)?

    反汇编中有这样的代码 movl 0x6 0x4 rbp 我尝试以这种方式打印该值但失败 gdb p 0x4 esp A syntax error in expression near esp gdb p 0x4 esp Argument t
  • 为什么我的dispatch_once会陷入僵局?

    为什么我会陷入僵局 void foo static dispatch once t onceToken dispatch once onceToken self foo whatever 我预计foo第一次调用时执行两次 现有的答案都不是很
  • MCrypt rijndael-256 到 OpenSSL aes-256-ecb 转换

    由于 Mcrypt 已被弃用 我想在代码中使用 OpenSSL 因为我们已经在服务器中使用 php 7 2 4 我使用以下代码进行加密 解密 加密 function encrypt text salt if text return if s