使用 SJCL 在 Javascript 中加密并在 PHP 中解密

2024-03-10

我想用 Javascript 加密一些数据,并将其发送到 php 服务器后可以解密。

我计划使用 JS 加密库作为 SJCL :http://crypto.stanford.edu/sjcl/ http://crypto.stanford.edu/sjcl/。到目前为止,我可以在 JS 中加密我的数据并通过 ajax post 发送。 我的JS代码看起来像这样。

sjcl.encrypt('a_key','secured_message');

我的问题是如何在 php.ini 中解密我的数据。如果可能的话请告诉我如何使用示例代码来做到这一点。 (注意:SSL 不是我的选择,现在我计划使用 KEY 作为每个请求生成的随机数)

Thanks


PHP 7.1.0 终于添加了 openssl 对 iv 和 aad 参数的支持BUT它错误地强制执行 12 字节 iv 长度。

在您的示例中,我们加密如下:

var sjcl = require('./sjcl');
console.log(sjcl.encrypt('a_key', 'secured_message', { mode: 'ccm', iv: sjcl.random.randomWords(3, 0) }));

To get:

{"iv":"YAKkgmNCcVawQtiB","v":1,"iter":10000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"CwEDE4PXBzY=","ct":"pJ7nmnAGXiC9AD29OADlpFdFl0d/MxQ="}

所以,给定:

$password = 'a_key';
$input = json_decode('{"iv":"YAKkgmNCcVawQtiB","v":1,"iter":10000,"ks":128,"ts":64,"mode":"ccm","adata":"","cipher":"aes","salt":"CwEDE4PXBzY=","ct":"pJ7nmnAGXiC9AD29OADlpFdFl0d/MxQ="}', true);

我们可以在 PHP 7.1.0 中解密如下:

$digest   = hash_pbkdf2('sha256', $password, base64_decode($input['salt']), $input['iter'], 0, true);
$cipher   = $input['cipher'] . '-' . $input['ks'] . '-' . $input['mode'];
$ct       = substr(base64_decode($input['ct']), 0, - $input['ts'] / 8);
$tag      = substr(base64_decode($input['ct']), - $input['ts'] / 8);
$iv       = base64_decode($input['iv']);
$adata    = $input['adata'];

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

使用 SJCL 在 Javascript 中加密并在 PHP 中解密 的相关文章

  • 可以在初始 DOM 解析期间/之前修改 DOM 吗?

    是否可以在初始 DOM 解析期间或之前修改 DOM 或者我是否必须等到 DOM 被解析和构建之后才能与其交互 更具体地说 是否有可能阻止 DOM 中的脚本元素使用用户脚本 内容脚本或 Chrome 或 Firefox 中的类似脚本运行 在解
  • 使用 dc.js 按条形值对条形图中的条形进行排序(排序)

    如何通过维度的计算值而不是维度本身的名称对 dc js 示例中的 x 轴 维度 进行排序 例如 请考虑序数条形图的 dc js 示例 https github com dc js dc js blob master web examples
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 检查 jQuery 1.7 中是否存在基于文本的选择选项

    所以我有以下 HTML 片段
  • DataTables row.add 到特定索引

    我正在替换这样的行项目 var targetRow entity row dataTable targetRow closest table dataTable DataTable dataTable row targetRow remov
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • 使用会话 php 创建 cookie?

    我使用会话来登录我网站中的用户 问题是 我想让用户remember密码 因此关闭 打开浏览器后他们不需要再次登录 我需要使用 cookie 和 session 来实现它吗 my code user POST user pass POST p
  • 从数据库检查数据的异步解决方案各种循环子句

    我想要做的是异步检查数据库并从中获取结果 在我的应用程序中我试图实现Asynchronously将此步骤解决为 从数据库中检查手机号码JsonArray循环子句的种类 Create JsonArray从结果 打印创建的数组 我学到了足够多的
  • PHP 表单 - 带验证蜜罐

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

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • 通过 htaccess 将 PNG 解析为 PHP 仅适用于本地服务器,但不适用于网络服务器

    我用 PHP 创建了一个动态 PNG 图片 为了使用 PNG 扩展名 我创建了一个包含以下内容的 htaccess 文件 AddType application x httpd php png 在我的本地 XAMPP 服务器上 一切工作正常
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • 如何从日期中查找该月的最后一天?

    如何在 PHP 中获取该月的最后一天 Given a date 2009 11 23 我要2009 11 30 并给出 a date 2009 12 23 我要2009年12月31日 t返回给定日期所在月份的天数 请参阅的文档date ht

随机推荐

  • 如何防止特定模板的隐式模板实例化?

    我想阻止特定模板类的所有隐式模板实例化 以防止它被实例化到每个翻译单元中 看来我的选择是 Use fno 隐式模板在 gcc 的命令行上 这 抑制所有隐式模板实例化 这不是我想要的 我只想防止单个模板出现这种情况 使用C 11 外部模板 但
  • Angular 2 组件中重复的“id”属性

    Context 我正在为复选框编写一个自定义 Angular 组件 该组件呈现复选框标记和标签标记 复选框的 id 属性和标签的 for 属性都设置为组件的id财产 一个 Input到组件 以确保单击标签将切换复选框 该模板的简化版本如下所
  • 如何将 XTickLabel 重置为默认值

    在 R2010b 中 我可以通过图形编辑器将刻度标签重置为自动 但我想以编程方式将它们重置为默认值 I tried set gca XTickLabel auto 但它在每个刻度处显示 自动 有什么提示吗 你需要设置XTickLabelMo
  • 如何删除 CreateUserWizard 控件中的表标签

    如何使用 CreateUserWizard 控件而不让它呈现 html 表 我已经自定义了 CreateUserWizard 的布局 并使用 css 对其进行样式设置 由于以下原因 我的按钮距离表单太远 table 默认情况下 asp ne
  • 哪里可以下载 Eclipse 3.6 (Helios) 的 GlassFish 插件

    您能帮我下载 Eclipse 3 6 Helios 的 GlassFish 插件吗 我试过 https ajax dev java net eclipse https ajax dev java net eclipse Eclipse 中新
  • 为什么每次运行调用 Foo::getInstance() 的脚本时 PHP 都会创建一个新的单例实例?

    我怀疑 PHP 单例不是真正的单例 所以我做了一个测试 我创建了以下课程 class MySingleton private static instance private function construct error log I am
  • 将变量值从 main.py 传递到 .kv 文件

    我正在尝试获取名为的变量的值h从 main py 文件到我的 kv文件 但我得到的只是一个空白屏幕 这是我的main py class ExampleApp App def build self h SoME STRING IS HERE
  • struts2中如何调用一个action中定义的不同方法?

    我不熟悉struts2 但我知道在按名称调用操作期间 Action 中默认调用方法execute 但是如何调用同一个动作类中定义的其他方法呢 在下面的示例中 当我在ajax中设置url链接时 会调用execute 方法 如下所示 saveJ
  • 从列表内的微调器获取值

    我已经使用扩展列表活动的列表适配器创建了android应用程序 在列表中我有旋转器 我如何从列表中的旋转器获取值 告诉一些想法 谢谢进步 尝试这个 Override public void onItemSelected AdapterVie
  • 如何将所有 GitHub 机密放入环境变量中以供操作访问(在我的例子中是 powershell)?

    我读过一些类似的帖子 但似乎没有人回答这个问题 如果我知道秘密的名称 我可以将单个 GitHub 秘密设置到操作中的环境变量中 环境 PW ID0007 秘密 PW ID0007 如何在不知道秘密名称的情况下将所有秘密公开为环境变量 批量或
  • 如何避免在任何时候()“通过引用更新”?

    我想将数字变量转换为POSIXct using anytime 我的问题是anytime
  • 如何使用与 Meteor 具有传递依赖关系的 Node.js 库?

    可以在 Meteor 中使用 node js 包作为此处描述 https stackoverflow com questions 11691513 it possible use a nodejs package inside meteor
  • Grails 依赖注入在服务之外?

    我有一个 Grails 应用程序 需要运行一个可能会随着时间的推移而被替换的策略 我知道 Spring 是 Grails 的基础 所以我想知道我是否可以访问 Spring 的 IoC 容器 以便我可以在 xml 文件中外部化实际依赖项 注意
  • Hibernate @PreUpdate:检查已更改的内容

    问题 如何检查注释的方法内哪些字段已更改 PreUpdate 可选 如果上述问题的答案是 不可能 那么也许还有其他方法可以解决我的问题 I want自动更新modified Tourist每次我们改变它的字段时 除了情况当我们只修改loca
  • Laravel 4 测试; “phpunit”无法识别?

    http four laravel com docs testing http four laravel com docs testing说 安装新的 Laravel 应用程序后 只需运行phpunit在命令行上运行测试 phpunit无法
  • 如何将一个 DialogFragment 提升到另一个之上?

    假设我有几个对话框片段 它们是为了响应可以以任何顺序到达的消息和事件而显示的 通常 最后显示的对话框将位于顶部 有没有办法显示对话框片段under是现有的 还是在显示后更改其 z 顺序 我的应用程序一次显示多个对话框的情况应该很少见 但这种
  • Apache POI 获取字体规格

    我想自动调整 Excel 中的列大小 但又不会花费太多性能 Apache POI 的内置自动调整大小非常慢 在几个小时后没有完成 100 万行 为了节省性能 我只想近似单元格宽度 但为此我需要字体规格 Apache POI 有一个类叫做Fo
  • 如何为 Mac OS 编写互联网帐户插件?

    Mac OS 上有多个邮件 联系人和日历插件 但我需要具有邮件 联系人和日历服务的新型帐户 我不想将此帐户单独添加为邮件帐户 联系人帐户和日历帐户 我用谷歌搜索并没有找到有关这些插件的文档 我只知道它们位于 System Library I
  • 在 Woocommerce MINI CART 中显示小计、税收、总计

    我有一个带有 woocommerce 插件的 WordPress 网站 在 woocommerce 设置中 我在购物车和结帐中显示不含税的价格 因此它显示了小计 税收和总计 但在迷你购物车小部件中 它只显示小计 如何让迷你购物车小部件显示小
  • 使用 SJCL 在 Javascript 中加密并在 PHP 中解密

    我想用 Javascript 加密一些数据 并将其发送到 php 服务器后可以解密 我计划使用 JS 加密库作为 SJCL http crypto stanford edu sjcl http crypto stanford edu sjc