问题标签 [node-crypto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
689 浏览

node.js - Nodejs 加密 setEngine

我正在尝试使用 crypto.setEngine 函数加载 gost openssl 引擎。唯一可行的方法是指定 dylib 的完整路径(例如“/opt/local/lib/engines/libgost.dylib'”)。但我仍然无法使用加载引擎的摘要。调用 crypto.createSign('md_gost94') 失败,出现“未知消息摘要”错误。

AFAIK node.js 与捆绑的 openssl 一起使用。它包括像 gost 这样的引擎吗?它应该与引擎的外部dylib一起使用吗?

我将 MacOSX 10.10 与 nodejs v0.12.2 一起使用。

谢谢!

更新它在带有系统 libgost.so 模块的 Ubuntu 12.04 系统上运行良好。在 OSX 上,我不得不使用安装了端口的 openssl,因为系统 openssl 已过时。

0 投票
0 回答
1081 浏览

javascript - Node.js 加密模块 - ECDH

我正在尝试使用crypto 模块在 Node.js 和使用Web Cryptography API的 Web 客户端之间完成密钥交换。

到目前为止,我设法将密钥交换处理到在服务器和客户端上派生共享密钥的地步。在服务器端,我使用了“secp521r1”曲线,在客户端使用了名为“P-521”的等效曲线。

在客户端上,我收到一个长度为 32 字节的共享密钥,我认为这是 256 位 AES-GCM 密钥的正确长度。但在服务器上,我收到一个长度为 66 字节的密钥。下面是生成的密钥的两个示例,一个以 base64 编码,一个为字节数组:

我想我在 Node.js 上错误配置了一些东西,但我在文档中找不到任何关于如何正确操作的提示。

这是我在 Node.js 上提取密钥的方法:

我的问题是:

  • 我的假设是否正确,来自 Node.js 的密钥不正确?
  • 我需要做什么才能正确提取 AES-GCM 256 位密钥?
  • 电流输出是什么意思?

任何指导表示赞赏。

0 投票
1 回答
4081 浏览

node.js - node.js 加密模块的问题

我正在尝试创建一个 HMAC 用于使用 API 进行身份验证。

但是,我遇到了标准节点加密的一些问题。

查看“身份验证”部分下的此示例:

散列这两个值应该给我一个返回值:cdbf5cc64c70e1485fcf976cdf367960c2b28cfc28080973ce677cebb6db9681

但是,当我使用加密库时,我似乎无法复制它:

返回

返回

此外,它们都不同的事实也是一个问题。出于某种原因, createHmac(algorithm, key) 方法对我不起作用。

应该返回

但改为返回:

我正在尝试使用与上面列出的 API 相关的库来调试我在身份验证中收到的错误,但似乎在加密库中遇到了一些错误,这使我无法完成很多有用的调查。

0 投票
1 回答
926 浏览

ruby-on-rails - Nodejs 和 Ruby 中的加密

我想要加密一个字符串并传递给 Rails 应用程序,所以我在 Nodejs 和 Ruby 中都找到了加密库。

在 Node.js 中:

结果是:

在红宝石中

结果是:

所以我使用相同的方式和密钥加密相同的字符串,为什么结果不一样?

0 投票
2 回答
801 浏览

node.js - 当 unicode 字符时,NodeJS 中的加密失败

我正在尝试使用 NodeJS Crypto 库验证数据完整性。它需要计算 JSON 字符串的 Hmac。

经过一些测试,我已经能够找到问题:只要它包含一个 unicode 字符就会发生。例如:

但是,这会返回错误的 hmac。PHP 中的相同代码与我从第三方服务收到的签名相匹配:

如果我删除 NodeJS 有效负载中的“\u0026”,那么我会得到与 PHP 相同的正确结果。

我在这里做错了吗?

谢谢!

0 投票
1 回答
340 浏览

node.js - LockBox / Node Crypto 兼容性

我正在尝试(但失败)在 Delphi 中使用 LockBox 3 破译一条使用 Node.js 的加密库加密的消息。

node.js 代码:

结果是

德尔福代码:

我错过了什么?

0 投票
2 回答
7029 浏览

javascript - 节点crypto与crypto-js加解密的兼容性

如何使用 crypto 模块(服务器端)和 crypto-js(客户端,react-native)正确加密/解密 node.js 之间的数据?

注意:我在 react-native 项目中使用 cryptojs,因此我不能在客户端使用 crypto。替换加密服务器端不是我的选择。

服务器端代码:

客户端代码

0 投票
1 回答
1170 浏览

node.js - NodeMCU node.js 加密

我试图在 node.js 和 NodeMCU 之间建立加密通信。经过一番努力,我能够使用 node.js 加密并在 NodeMCU 上解密。反向不起作用。mscdex 的回复有效。因此,为了他人的利益,我修改了 node.js 代码。谢谢。

节点单片机代码:

Node.js 工作代码:

现在再次进行 NodeMCU 端测试:

什么工作?

Node.js 加密在 NodeMCU 上被解密,即使加密的字符串有点不同。

什么不工作?

NodeMCU 的加密字符串没有被 node.js 解密。我收到以下错误:

错误:错误:0606506D:数字信封例程:EVP_DecryptFinal_ex:Decipheriv.Cipher.final (crypto.js:153:26) 处的错误最终块长度错误 (/home/pi/rampion/nodejs/test2. js:22:19) 在对象。(/home/pi/rampion/nodejs/test2.js:43:13) 在 Module._compile (module.js:413:34) 在 Object.Module._extensions..js (module.js:422:10) 在Module.load (module.js:357:32) 在 Function.Module._load (module.js:314:12) 在 Function.Module.runMain (module.js:447:10) 在启动时 (node.js:146 :18)

错误是由于 mscdex 在他的回复中强调的原因。

NodeMCU 不使用 PKCS 填充,但节点的加密模块默认使用/预期它,因此在通过解密时调用 .update() 之前需要禁用它 decipher.setAutoPadding(false); calling

0 投票
1 回答
3443 浏览

node.js - NodeJS 6加密抱怨弃用消息中的摘要?

我正在尝试在我的 NodeJS 应用程序中使用本机加密模块,但我不断收到弃用消息:

(节点:26)弃用警告:不推荐使用未指定摘要的 crypto.pbkdf2。请指定摘要

我知道这是由于期望摘要向前推进的更改集: https ://github.com/nodejs/node/pull/4047

但是,据我所见,我的代码完全遵循文档中概述的语法。其他人看到我在这里做错了吗?

注意:如果有任何区别,这是在 node:6 的 slim 版本中执行的

0 投票
2 回答
7224 浏览

javascript - 为什么 crypto.createHash 在新版本中返回不同的输出?

问题

我有crypto.createHash用于生成md5哈希的 node.js 模块。

最近我注意到crypto模块生成的哈希在新版本中有所不同:

代码

Node.js v0.10.0

输出:ab3af8566ddd20d7efc9b314abe90755

Node.js v6.1.0

输出:07625e142e4ac5961de57472657a88c1

问题

我想知道是什么原因导致新版本出现这种情况,我该如何解决?

更新

GitHub 上的类似问题: