问题标签 [webcrypto-api]

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 投票
1 回答
1010 浏览

javascript - 伪造 JavaScript 库在 Windows 证书存储中导入 p12 文件失败

我正在使用forge库创建一个 .p12 格式的自签名证书,该证书使用WebCryptoAPI生成私钥-公钥对。但是,当我尝试在 Windows 证书存储中导入 .p12 文件时,出现以下错误:

在此处输入图像描述

这个链接说私钥可能有问题。

以下是我通过 webcryptoApi 生成的密钥片段

我生成 p12 的伪造代码片段如下:

笔记 :

  • 我也无法在 Mozilla 证书存储中导入文件。那么p12文件可能有问题吗?
  • Windows 证书存储在导入时正确验证我的私钥密码,仅完成阶段失败。
0 投票
1 回答
697 浏览

javascript - 使用 WebCrypto API 进行渐进式加密/解密?

因此,我开始研究 WebCrypto API,因为它看起来非常快,该 api 似乎使用起来相当简单,并且我设法很容易地实现加密/解密。

现在我正在尝试看看是否可以使用它进行渐进式加密/解密。我目前使用 CryptoJs,在很多情况下我处理分块下载和上传文件,这意味着文件被分成更小的部分,并且这些部分的处理是单独完成的。

在 CryptoJs 上,可以保持 " Encryptor" 的一个实例处于打开状态,这样您就可以在从源中获取块时继续将它们传递给它,并且您可以finalize()在完成后调用一个函数。

我已经在 Google 和 StackOverflow 上搜索了几个小时,以寻找使用 WebCrypto 实现相同目的的方法,但我找不到答案。

有谁知道该怎么做,或者甚至可以使用当前的api来完成吗?

0 投票
1 回答
1229 浏览

javascript - 如何使用 AES-GCM 对 C#.NET 加密()然后 JS WebCryptoApi 解密()?

我想使用 C# 加密数据并使用 JS 解密它。

该表表明 AES-GCM 是使用 WebCryptoApi https://diafygi.github.io/webcrypto-examples/的方式。

我成功地使用 BouncyCastle https://codereview.stackexchange.com/questions/14892/simplified-secure-encryption-of-a-string在.NET 中加密(和解密)。

但是,我不知道如何解密这个客户端。在https://github.com/diafygi/webcrypto-examples#aes-cbc---decrypt上有很多 WebCryptoApi 示例,包括 AES-GCM 。

第一步(似乎可行)是导入密钥,我将其作为 base-64 编码字符串:

最后一步应该是解密编码的消息,这也是一个base-64编码的字符串

不幸的是,这是一个 DomError。

我不知道在解密方法中我应该为“iv”使用什么。我试过空,ArrayBuffer(0),ArrayBuffer(12)。这几乎是我的理解结束的地方。

0 投票
1 回答
1687 浏览

javascript - 仅使用 WebCrypto API 使用密码加密私钥

是否可以使用字符串作为加密密钥并仅使用 WebCryptoAPI 来加密 CryptoKey(私钥)?我实现了一个功能,但出现以下错误:

还有,我的功能。

0 投票
1 回答
188 浏览

javascript - 密钥生成将算法作为错误抛出

我有以下代码:

当我在 Chrome 或 Firefox 中运行此代码(此处为现场演示)时,它会打印出来generated key。然而,在 Microsoft Edge 14.14393 中,输出非常奇怪:

为什么 Edge 在这里抛出错误?
为什么抛出的错误不是正常的错误对象,而是算法规范?
如何在 Edge 中生成 ECDSA 密钥?

0 投票
1 回答
1170 浏览

javascript - web.crypto 加密 c# 解密

我正在尝试做:

  1. 使用 web.crypto 加密文本,
  2. 使用 AesCryptoServiceProvider 解密文本我的代码中没有任何异常,但解密与我加密的纯文本不匹配

解密后的明文字节相同,但字符串编码不起作用

我正在使用随机 iv,密钥和明文是恒定的。

之后,我使用 json 发送 iVec,密文

我正在使用以下实用程序功能:

服务器端接受密钥,并假设解密:

我也有这个实用功能:

我从 anthor 函数中获取参数:

0 投票
1 回答
1299 浏览

javascript - 使用 WebCrypto API 封装和解封装密钥

我正在Webcrypto API客户端进行一些加密工作。虽然我无法打包和解包密钥,但浏览器总是返回以下错误。

你和我对这个错误无能为力,所以我粘贴了我的代码。

我不知道问题是否与将关键对象转换为字符串有关。不幸的是,我需要将其转换为字符串以将其保存在数据库中。

0 投票
1 回答
1492 浏览

javascript - Angular 2:window.crypto.subtle.importKey 在“localhost”中有效,但在“ip”中无效

0 投票
1 回答
777 浏览

electron - 电子在 building.gyp 中包含 openssl

我正在尝试在需要openssl库的电子中使用node-webcrypto-ossl并包含要包含在binding.gyp中的文件夹。

我尝试将其包含在目标中

但它没有用

0 投票
1 回答
2656 浏览

javascript - 使用用户提交的密码进行 WebCrypto 字符串加密

使用 JavaScript 和 WebCrypto API(没有任何外部库),使用从用户提交的密码派生的密钥加密字符串的最佳方法是什么?

这是一些代码,其中密钥不是派生的,而是由generatekey()函数简单生成的。目标是加密字符串,然后解密它以验证我们是否得到了原始字符串:

它适用于所有最近的浏览器。

现在我正在尝试修改encryptThenDecrypt()函数以便从用户提交的密码中派生密钥:

它失败。错误消息是:

  • 野生动物园 11:CryptoKey doesn't match AlgorithmIdentifier
  • 火狐 54:A parameter or an operation is not supported by the underlying object
  • 铬 61:key.algorithm does not match that of operation

必须是一些简单的修复,但我看不出是什么。任何帮助将不胜感激。