问题标签 [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.
javascript - 如果我只有现有的私钥,则在浏览器中生成公钥
我正在使用 scep256k1 曲线生成新的以太坊地址。由于存储和硬件限制,我只能存储私钥。我正在寻找在浏览器中为非对称加密(不是以太坊公共地址)生成公钥的方法。
据我了解,公钥可以从 scep256k1 私钥派生,但我不确定如何在浏览器中执行此操作,或者是否可以使用现有库,但我有预感它是. 我目前正在尝试查看是否可以使用 Web3js、SJCL 或 CryptoJS,但我对其他选项持开放态度。
在这里提供一些对流程的理解。第 3 步是我目前正在尝试做的事情:
- 使用 openSSL 生成 scep256k1 密钥对
- 将私钥上传到硬件设备并将其提供给用户
- Web 界面中的用户:使用来自硬件的私钥来访问他们的公钥,并重建以太坊地址。
任何指向正确方向的指针表示赞赏!
javascript - 我可以使用 Google 闭包编译器编译 SJCL 库吗?
我有一个使用 Closure Compiler v20181210 编译和缩小的 vanilla javascript 项目。我想在该项目中使用 SJCL 进行加密。
我将此文件复制到我自己的项目中并使用该库编写代码。但是当我尝试编译它时,Closure Compiler 从库中抛出一堆错误(粘贴在下面)。
在 SJCL 网站上,它说该文件是使用 Google Closure Compressor 压缩的。所以我想它应该与 Closure 兼容?那为什么不编译呢?
另外,我读到了externs。但我希望所有代码都在一个缩小的文件中。使用 externs,看来我需要另一个 SJCL 导入。
一些闭包编译器错误:
编辑:我正在使用所有这些参数运行 Closure 编译器。当我删除它们时,项目就会编译。但我不确定删除这些是否安全?
javascript - Javascript 中的 AES GCM 256 加密
我想实现 Java AES GCM 256 代码的 Javascript 等价物
Java代码如下:
我如何实现相同的。我尝试了几种使用 SJCL 库的方法,但输出不匹配
javascript - sjcl 是否支持数组缓冲区?
我正在尝试使用 sjcl 加密然后解密数组缓冲区。我可以在源代码中看到 sjcl 有一个用于 arraybuffer 的编解码器,但我就是不知道如何使用它:
第一个 console.log() 打印 64 (这是有道理的)。第二个 console.log() 打印 150(加密结果的大小)......但第三个 console.log 总是打印 0。
node.js - TypeError:无法读取未定义的属性“elGamal”
我运行下面的代码片段,我收到错误TypeError: Cannot read property 'elGamal' of undefined
sjcl - CryptoKit - 用公钥加密?
为了给你上下文,有一个开发项目的 API 的开发人员,并且有一部分 json 将被加密。所以我必须破译他的内容。他列出了我在 iO 方面需要的所有功能。
所以我有他的javascript代码,我必须迅速重做等效的代码。他使用 JS 库(SJCL):https ://github.com/bitwiseshiftleft/sjcl/
我正在尝试使用公钥加密一些文本,但我不能。
首先,我生成了私钥/公钥
现在,我正在尝试使用公钥加密文本..
在这里,他的 javascript 代码:
我不明白如何使用 CryptoKit 快速做同样的事情:/
你能帮我吗 ?:)
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) -- 关联数据长度的预先声明。如果未指定,将在内部进行一些额外的缓冲。
javascript - 使用不是 json 的 sjcl.decrypt 解密 ArrayBuffer
在我加密我的数据之前,我已经把它变成了这种格式:
加密后,我将其编码为以这种方式存储:
最后将其转换为base64。
现在我想用 sjcl 库函数解密我的数据sjcl.decrypt
。
- 我有我
privateKey
的 JSON 字符串。 - 我有我
cipher
的 asUint8Array
。 - 加密后,我已将其
cipher
放入原始编解码器:new TextDecoder().decode(cipher)
现在怎么办?sjcl 抛出,json decode: this isn't json!
. 明白了,因为我的加密数据是一个ArrayBuffer。
所以我的问题是:是否可以用 sjcl 解密我的案例? 在查看 sjcl 源时,似乎解密需要一个 JSON。但我没有 JSON。
无法编辑加密过程。
谢谢!
- - - - - - 更新 - - - - - -
这就是生成密钥对的方式:
然后像这样导出密钥(我收到那个密钥):
使用公钥加密:
在我的应用程序中,我无法访问 WebCrypto Api。尝试了 sjcl 库,但似乎 rsa 加密/解密是不可能的。使用 jsrsasign 库测试,但不支持 jwk 导出密钥。我可以转换jwk
成pkcs8
?