尝试使用 php 使用 aes-256-gcm 进行解密

2024-01-04

我想知道是否有人可以帮忙

我使用的是aes-256-gcm加密方法,可以加密,但无法解密。

下面是我的代码,任何人都可以看到我哪里出错了

$textToDecrypt = $_POST['message'];
$password = '3sc3RLrpd17';
$method = 'aes-256-gcm'; 
$tag_length = 16;
$password = substr(hash('sha256', $password, true), 0, 32);
$iv = chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0);
$decrypted = openssl_decrypt(base64_decode($textToDecrypt), $method, 
$password, OPENSSL_RAW_DATA, $iv, $tag_length);

加密代码

$textToEncrypt = $_POST['message'];
$password = '3sc3RLrpd17';
$method = 'aes-256-gcm'; 
$tag_length = 16;


$password = substr(hash('sha256', $password, true), 0, 32);



$iv = chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . 
chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . chr(0x0) . 
chr(0x0) . chr(0x0) . chr(0x0);


$encrypted = base64_encode(openssl_encrypt($textToEncrypt, $method, 
$password, OPENSSL_RAW_DATA, $iv, $tag_length));

您需要保存 GCMtag(HMAC) 与密文并将其传递给解密函数。它不会自动为您保存(您还应该生成一个好的 IV 并将其与密文一起存储)。

openssl_加密 http://php.net/manual/en/function.openssl-encrypt.php指定为:

string openssl_encrypt ( string $data , string $method , string $key [, int $options = 0 [, string $iv = "" [, string &$tag = NULL [, string $aad = "" [, int $tag_length = 16 ]]]]] )

如果你仔细看,你就穿越了$tag_length where $tag是期待。

它应该是这样的:

加密:

$textToEncrypt = $_POST['message'];
$password = '3sc3RLrpd17';
$key = substr(hash('sha256', $password, true), 0, 32);
$cipher = 'aes-256-gcm';
$iv_len = openssl_cipher_iv_length($cipher);
$tag_length = 16;
$iv = openssl_random_pseudo_bytes($iv_len);
$tag = ""; // will be filled by openssl_encrypt

$ciphertext = openssl_encrypt($textToEncrypt, $cipher, $key, OPENSSL_RAW_DATA, $iv, $tag, "", $tag_length);
$encrypted = base64_encode($iv.$ciphertext.$tag);

解密:

$textToDecrypt = $_POST['message'];
$encrypted = base64_decode($textToDecrypt);
$password = '3sc3RLrpd17';
$key = substr(hash('sha256', $password, true), 0, 32);
$cipher = 'aes-256-gcm';
$iv_len = openssl_cipher_iv_length($cipher);
$tag_length = 16;
$iv = substr($encrypted, 0, $iv_len);
$ciphertext = substr($encrypted, $iv_len, -$tag_length);
$tag = substr($encrypted, -$tag_length);

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

尝试使用 php 使用 aes-256-gcm 进行解密 的相关文章

  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2
  • 用户可以更改 PHP 中 $_SESSION 的值吗?

    这是我的想法 我想知道是否可能 将信息存储在 PHP 的 SESSION 变量中有多安全 在 SESSION 变量中存储变量有两个潜在的 不安全 风险 另一个答案所描述的第一个称为 会话固定 这里的想法是 由于会话 ID 存储在 cooki
  • 获取 YouTube 最高缩略图分辨率

    我想获得 youtube 最高缩略图 maxresdefault jpg 像这个 http i ytimg com vi Cj6ho1 G6tw maxresdefault jpg http i ytimg com vi Cj6ho1 G6
  • jQuery ajax 调用包含重音字符的 url 将错误的 Uri 从 IE 发送到服务器

    我在使用 IE 发送包含重音字符的 url 时遇到问题 这是一个简单的函数 function runjQueryTest var url test Beyonc get url function 在服务器 PHP 上我记录了请求uri的值
  • PHP WCF 集成

    是不是如果我想支持php客户端访问我的服务 我必须有一个基本的http端点 这是因为php仍然只支持soap 1 1吗 据我所知 自从我使用 PHP 以来已经两年了 情况仍然如此 如果客户端应用程序将使用 PHP 的内置 SoapClien
  • 如何在 JavaScript 中创建服务器端进度指示器?

    我想在我的网站中创建一个部分 用户可以在其中进行一些简单的操作update纽扣 这些中的每一个update按钮将发送到服务器 并在幕后进行长时间的处理 当服务器处理数据时 我希望用户有某种进度指示器 例如进度条或文本百分比 我使用 jQue
  • 如何使用 JNDI 和 Digest-MD5 对 LDAP 进行身份验证

    我正在尝试使用 DIGEST MD5 加密对 LDAP 服务器进行身份验证 使用简单加密时 它工作得很好 但由于显而易见的原因 我无法通过网络以纯文本形式发送密码 奇怪的是 在使用 Softerra LDAP 浏览器时 我可以使用 Dige
  • 在哪里可以学习网络编程从入门到精通? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我尝试做教程 但它是无组织且无结构的 我在哪里可以学习 PHP 从初学者到大师 我正在寻找类似的网站w
  • Delphi AES 库 (Rijndael) 使用 KAT Vectors 进行测试

    对于这两个库 Delphi 加密概要 v 5 2 http code google com p delphidec TurboPower 密码箱 v 2 07 http lockbox seanbdurkin id au tiki list
  • 覆盖 FOS 用户包中的“更改密码”模板

    我做了一些研究 遗憾的是找不到任何帮助 因此 我将 FOSUserBundle ChangePasswordAction 渲染到我的模板中 但它显示供应商提供的默认模板 我的渲染控制器的模板 block body h2 Einstellun
  • PHP 中标头的使用

    非常简单的问题 这两个 PHP 版本 5 标头调用中哪一个是 最好的 header Not Modified true 304 header HTTP 1 1 304 Not Modified 我很确定第一个是最多价的 但只是好奇如果在 H
  • Facebook PHP-SDK 页面刷新后似乎丢失了 userID

    我似乎登录工作正常 我可以登录 接受应用程序 第一次 然后显示用户信息 例如姓名 图片 等 然而 当我刷新页面时 userid 又回到 0 我必须再次登录 我不确定问题是什么 我必须在每次页面加载时重新启动它还是什么 我不知道 我会发布一些
  • 我必须使用什么加密程序来通过 HTTP 协议发送加密的“电子邮件”和“密码”值?

    我正在使用 Ruby on Rails 3 我想通过 HTTP 协议发送 电子邮件 和 密码 值 我知道 我不应该 但我需要 我需要从发送用户凭据我的客户申请到一个我的服务应用 我可以使用公共和私人RSA密钥来实现这一点 但如果是这样 我不
  • Facebook API sdk 4.0 - 将照片发布到 Facebook

    我正在尝试创建一个应用程序 用户可以在其中浏览照片并将其从计算机提交到 Facebook 为此 他们首先必须将照片上传到服务器 然后使用 Facebook 请求将此图像发布到 Facebook 我正在使用多部分 表单数据 这就是我到目前为止
  • 在 iOS 上使用 RNCryptor 异步解密大文件

    我需要在 iOS 上使用 RNCryptor 异步解密一个大文件 以便显示进度条 我在任何地方都找不到示例 因此尝试了我猜对的方法 但是 我想出的方法不起作用 解密器的处理程序从未被调用 并且线程在发送所有数据后因 EXC BAD ADDR
  • MSDeploy自动加密连接字符串,在字典中找不到密钥

    Since 网络部署 3 5 https blogs iis net msdeploy archive 2013 07 09 webdeploy 3 5 rtw aspx使用以下标志支持连接字符串的自动加密 EnableRule Encry
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • php - 解析html页面

    div divbox div p para1 p p para2 p p para3 p table class table tr td td tr table p para4 p p para5 p 有人可以告诉我如何解析这个 html
  • session_start():无法解码会话对象

    我有时在使用 CodeIgniter 时遇到以下问题 错误 2019 03 05 19 57 26 gt 严重性 警告 gt session start 无法解码会话对象 会话已被销毁 system libraries Session Se
  • PHP 表单 - 带验证蜜罐

    我有以下内容 效果很好 但对垃圾邮件机器人开放 我想放入蜜罐 而不是验证码 下面的代码适用于验证姓名 电子邮件 消息 但我无法让它与蜜罐一起工作 任何人都可以查看 蜜罐 代码并告诉我如何修复它吗 我希望表单给出 success2 不允许垃圾

随机推荐

  • 以编程方式更改 Xib 方向的最佳方法

    我有一个应用程序 它有一个设置页面 用户可以在其中更改应用程序的语言 最终 xibs的方向将会改变 解释一下 例如 如果语言是英语 则方向将为 LTR 但如果是阿拉伯语 则为 RTL Question 实现这一目标的最佳方法是什么 尝试解决
  • C# 中的正则表达式负向前瞻

    我需要匹配 this 但不是 this 我有这个代码 Match match Regex Match result RegexOptions IgnoreCase while match Success MessageBox Show ma
  • 如何使用代码更改组合框的边框颜色?

    我有一个组合框 我想将边框的颜色更改为红色以将其标记为必填字段 我正在通过我的代码动态生成此组合框列 为了更改边框颜色 我应该设置哪些属性 DataGridTemplateColumn dataGridComboBoxTemplateCol
  • 无法通过 PowerShell 将角色添加到 Azure 应用程序注册

    我正在使用 Powershell 将角色添加到 Azure 中的现有应用程序注册 我正在使用这个命令 Set AzureADApplication ObjectId myApp ObjectId AppRoles newAppRoles n
  • Pico 容器异常:org.picocontainer.injectors.AbstractInjector$UnsatisfiableDependencyException:?

    我似乎遇到了 pico 容器异常 org picocontainer injectors AbstractInjector UnsatisfiableDependencyException 我的代码如下 代表网站特定页面的页面对象 publ
  • Linux 上的集群与lockf

    If lockf与 0 偏移量一起使用 两者之间有什么区别flock and lockf当在独占模式下使用时 如果有的话 我这么问是因为我正在阅读根据平台有条件地在这两个函数中进行编译的代码 并且我想了解可能的原因 之间的实际区别flock
  • 在 QTabWidget 中动态设置单个选项卡的样式

    如何单独 动态地访问单个选项卡 不是其内容或选项卡中的小部件 以实现样式目的 例如更改背景颜色或向其添加图形效果 应用程序可以通过让选项卡以另一种颜色闪烁来通知用户该选项卡需要他们的注意 就像在 Windows 任务栏中 如果窗口想要获得焦
  • Vue路由器不渲染/挂载根路径组件

    我正在制作一个页面vue vue router and laravel 问题 当我进入localhost myproject public html the Home组件未渲染在router view 如果我单击指向服务组件的路由器链接 它
  • 如何正确钳位贝克曼分布

    我正在尝试实现 Microfacet BRDF 着色模型 类似于 Cook Torrance 模型 但我在使用本文中定义的贝克曼分布时遇到了一些问题 https www cs cornell edu srm publications EGS
  • 如何运行快捷方式

    我想知道从另一个应用程序中运行应用程序快捷方式的 官方 方式是什么 像这样 string program application exe Process Start program 这不会工作 如果application exe是一条捷径
  • .Net 4 - 在程序集中包含自定义信息

    我正在构建一个可扩展的应用程序 它将在运行时加载其他程序集Assembly LoadFile 这些附加程序集将包含 WPF 资源字典 外观等 普通资源 Resx 和 或插件类等内容 程序集也可以不包含公共类 只包含资源或资源字典 我正在寻找
  • 如何在SQL Server中生成Guid?

    我需要在 SQL 中创建一个 Id 作为 Guid 无身份 我该怎么做 我将 Id 定义为 uniqueidentifier 但保存在 Db 中的是 00000000 0000 0000 0000 000000000000 Use NEWI
  • Visual Studio 调试器值“{ }”是什么意思?

    我在 Visual Studio 2008 NET C 项目中观察到一个属性 并且调试器显示打开和立即关闭的大括号 我相信它是未初始化的 I 列表 但为什么它不显示 null 或 uninitialized 这是什么意思 br 米兰 最可能
  • 如何在 Swift 中使用 UISplitViewController

    所以我添加一个UISplitViewController到一个嵌入了UITabBarController The UISplitViewController has a UINavigationController作为与其自己的根控制器的主
  • 使用 CIImage 添加纯色边框

    我正在寻找一种使用 Core Image 将纯色边框添加到现有图像的方法 我找到了过滤器列表参考 但没有人制作它 Help 我们需要有要在其中创建实线边框的 CIImage 范围或 CGRect 然后 我们可以在指定区域绘制一个形成实线的C
  • ViewDidLoad 期间 ViewModel 为 null

    我正在开始在 iOS 中使用 MvvmCross public class MainView MvxTabBarViewController public override void ViewDidLoad base ViewDidLoad
  • 如何限制tensorflow GPU内存使用?

    我在 Ubuntu 18 04 中使用了tensorflow gpu 1 13 1 并在 Nvidia GeForce RTX 2070 上使用了 CUDA 10 0 驱动程序版本 415 27 下面的代码用于管理张量流内存使用情况 我有大
  • 有没有办法减少操作栏上操作项图标之间的间距?

    我想减少添加到 ActionBar 的操作项图标之间的间距 我们有办法做到这一点吗 使用自定义 android actionButtonStyle
  • 如何使用javascript获取网页的长度/大小

    我们使用 w3c 导航 API 获取网页计时信息 我们使用资源计时 API 获取资源信息 现在 如何获取网页的大小 看来 如果我知道页面何时加载等 我应该知道最后一个字节何时下载 这应该足以给我页面的长度 大小 我如何获得这个长度 尺寸 找
  • 尝试使用 php 使用 aes-256-gcm 进行解密

    我想知道是否有人可以帮忙 我使用的是aes 256 gcm加密方法 可以加密 但无法解密 下面是我的代码 任何人都可以看到我哪里出错了 textToDecrypt POST message password 3sc3RLrpd17 meth