问题标签 [sjcl]

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 回答
135 浏览

javascript - 如果我只有现有的私钥,则在浏览器中生成公钥

我正在使用 scep256k1 曲线生成新的以太坊地址。由于存储和硬件限制,我只能存储私钥。我正在寻找在浏览器中为非对称加密(不是以太坊公共地址)生成公钥的方法。

据我了解,公钥可以从 scep256k1 私钥派生,但我不确定如何在浏览器中执行此操作,或者是否可以使用现有库,但我有预感它是. 我目前正在尝试查看是否可以使用 Web3js、SJCL 或 CryptoJS,但我对其他选项持开放态度。

在这里提供一些对流程的理解。第 3 步是我目前正在尝试做的事情:

  1. 使用 openSSL 生成 scep256k1 密钥对
  2. 将私钥上传到硬件设备并将其提供给用户
  3. Web 界面中的用户:使用来自硬件的私钥来访问他们的公钥,并重建以太坊地址。

任何指向正确方向的指针表示赞赏!

0 投票
1 回答
63 浏览

javascript - 我可以使用 Google 闭包编译器编译 SJCL 库吗?

我有一个使用 Closure Compiler v20181210 编译和缩小的 vanilla javascript 项目。我想在该项目中使用 SJCL 进行加密。

我将此文件复制到我自己的项目中并使用该库编写代码。但是当我尝试编译它时,Closure Compiler 从库中抛出一堆错误(粘贴在下面)。

在 SJCL 网站上,它说该文件是使用 Google Closure Compressor 压缩的。所以我想它应该与 Closure 兼容?那为什么不编译呢?

另外,我读到了externs。但我希望所有代码都在一个缩小的文件中。使用 externs,看来我需要另一个 SJCL 导入。

一些闭包编译器错误:

编辑:我正在使用所有这些参数运行 Closure 编译器。当我删除它们时,项目就会编译。但我不确定删除这些是否安全?

0 投票
0 回答
2583 浏览

javascript - Javascript 中的 AES GCM 256 加密

我想实现 Java AES GCM 256 代码的 Javascript 等价物

Java代码如下:


我如何实现相同的。我尝试了几种使用 SJCL 库的方法,但输出不匹配

0 投票
1 回答
107 浏览

javascript - sjcl 是否支持数组缓冲区?

我正在尝试使用 sjcl 加密然后解密数组缓冲区。我可以在源代码中看到 sjcl 有一个用于 arraybuffer 的编解码器,但我就是不知道如何使用它:

第一个 console.log() 打印 64 (这是有道理的)。第二个 console.log() 打印 150(加密结果的大小)......但第三个 console.log 总是打印 0。

0 投票
0 回答
44 浏览

node.js - TypeError:无法读取未定义的属性“elGamal”

我运行下面的代码片段,我收到错误TypeError: Cannot read property 'elGamal' of undefined

0 投票
0 回答
142 浏览

sjcl - CryptoKit - 用公钥加密?

为了给你上下文,有一个开发项目的 API 的开发人员,并且有一部分 json 将被加密。所以我必须破译他的内容。他列出了我在 iO 方面需要的所有功能。

所以我有他的javascript代码,我必须迅速重做等效的代码。他使用 JS 库(SJCL):https ://github.com/bitwiseshiftleft/sjcl/

我正在尝试使用公钥加密一些文本,但我不能。

首先,我生成了私钥/公钥

现在,我正在尝试使用公钥加密文本..

在这里,他的 javascript 代码:

我不明白如何使用 CryptoKit 快速做同样的事情:/

你能帮我吗 ?:)

0 投票
1 回答
143 浏览

javascript - 这个用于解密 AES-CCM 加密字符串的 JS 函数的 Python 等效项是什么?

我想在 Python 3 中解密一个 AES 加密的字符串(CCM 模式)。

以下使用sjcl库的 JavaScript 代码工作正常:

输出:

我可以使用哪个库在 Python 中做同样的事情?

我尝试使用pycryptodome 库,但它接受一组不同的参数:

  • 密钥(字节)– 加密密钥
  • mode – 常量 Crypto.Cipher.<algorithm>.MODE_CCM
  • nonce (bytes) – 固定随机数的值。对于组合消息/密钥,它必须是唯一的。对于 AES,它的长度从 7 到 13 个字节不等。nonce 越长,允许的消息大小越小(nonce 为 13 字节,消息不能超过 64KB)。如果不存在,该库会创建一个 11 字节的随机 nonce(最大消息大小为 8GB)。
  • mac_len (integer) – MAC 标签的所需长度(如果不存在,则默认为:16 字节)。
  • msg_len (integer) – 预先声明要加密的消息长度。如果未指定,则 encrypt() 和 decrypt() 只能调用一次。
  • assoc_len (integer) -- 关联数据长度的预先声明。如果未指定,将在内部进行一些额外的缓冲。
0 投票
0 回答
68 浏览

javascript - 使用不是 json 的 sjcl.decrypt 解密 ArrayBuffer

在我加密我的数据之前,我已经把它变成了这种格式:

加密后,我将其编码为以这种方式存储:

最后将其转换为base64。

现在我想用 sjcl 库函数解密我的数据sjcl.decrypt

  • 我有我privateKey的 JSON 字符串。
  • 我有我cipher的 as Uint8Array
  • 加密后,我已将其cipher放入原始编解码器:new TextDecoder().decode(cipher)

现在怎么办?sjcl 抛出,json decode: this isn't json!. 明白了,因为我的加密数据是一个ArrayBuffer。

所以我的问题是:是否可以用 sjcl 解密我的案例? 在查看 sjcl 源时,似乎解密需要一个 JSON。但我没有 JSON。

无法编辑加密过程。

谢谢!

- - - - - - 更新 - - - - - -

这就是生成密钥对的方式:

然后像这样导出密钥(我收到那个密钥):

使用公钥加密:

在我的应用程序中,我无法访问 WebCrypto Api。尝试了 sjcl 库,但似乎 rsa 加密/解密是不可能的。使用 jsrsasign 库测试,但不支持 jwk 导出密钥。我可以转换jwkpkcs8?