问题标签 [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.
ios - 在 Objective-C 中解密 SJCL 密文
我正在将使用 SJCL 加密的数据接收到需要解密的 iOS 应用程序中。另一端是使用 SJCL 和 Apple 的CommonCrypto不支持的 AES CCM 模式,所以我为此使用VPCCMCrypt库。无法对发送 SJCL 密文的另一方进行任何更改。
以下是我的解密方法:
SJCL 密钥生成:
AES CCM 解密:
来自 SJCL 的所有输入数据都被正确解析(IV、盐、密钥大小、标签大小、PBKDF 迭代、密文)并NSData
从它们的Base64
编码表示中解码。密码使用相同。包括创建的 AES 密钥在内的所有数据都不为零。
最后,它在验证 CCM 标签内失败VPCCMCrypt
(标签不同)。上面的代码有问题吗?是否有任何其他 iOS/Objective-C/Swift 库来解密 AES CCM 甚至更好的 SJCL?我对 SJCL 库的 JavaScript 包装器不感兴趣。
为了进行测试,我使用了SJCL 演示页面中的简单加密数据。
编辑:
正如评论中所说,SJCL 发送 16 字节 IV 而不是 CCM 模式的最大 12 字节,然后在解密时将其内部钳制为最大 12 字节。这是更新的解密方法:
最后缺少的一件事是验证 TAG,我无法做到这一点。有任何想法吗?
javascript - 斯坦福 Javascript 加密库。(SJCL) 不发参数加解密
在SJCL 演示中,有一个复选框“将参数和经过身份验证的数据与消息一起发送”。将消息减少为非常短的字符串。
我找不到用于加密(和解密)函数的有效参数列表:
javascript - 在 python 中实现 SJCL .frombits
我正在尝试使用 pycrypto 在 Python 中重写一些 JS(它使用 SJCL 库)。我无法弄清楚如何实现以下代码
我的问题不是加密,而是库处理 fromBits 转换的方式。根据 SJCL 文档:
我们的大多数加密原语在内部对 4 字节字的数组进行操作,但其中许多可以接受不是 4 字节的倍数的参数。该库将位数组(其大小不必是 8 位的倍数)编码为 32 位字的数组。这些位按大端顺序打包成一个字数组,一次 32 位。由于单词是双精度浮点数,它们适合一些额外的数据。我们使用它(以一种私有的、可能改变的方式)来编码数组最后一个字中实际存在的位数。
对我来说,这似乎意味着转换为位数组会增加某种附加信息,我担心这些信息在concat操作期间会很普遍。此外,在 concat 之后,结果作为 base64 字符串返回。我不确定复制这个的正确的“结构”包装参数。
javascript - 在服务器端解密 AES c# 使用 sjcl 在客户端 javascript 上加密
我正在尝试解密一些文本加密的客户端并且很难做到这一点。
我在客户端使用 Standford Javascript Crypto Library (sjcl),它生成一个我可以发送到服务器的 json 字符串,像这样......
并产生这个 json 字符串......
现在我在服务器端收到这个 json 字符串,并尝试这样做......
上面的服务器端代码崩溃plainText = sr.ReadToEnd;
并抛出“输入数据不是完整的块”。我知道 AES 要求 cypherText 的块大小为 128,并且由于文本大小不同,我如何保证它的块大小为 128 并且不会破坏预期值?是否需要在这里设置填充?
另外,AESCryptoServiceProvider 中“ccm”对应的模式是什么?是否需要“iter”和“salt”才能正确解密?
提前致谢!
海梅
react-native - 为什么我无法在 React Native 中捕获导入错误?
此代码在 React Native 中失败,但在 Node 中没有:
谁能告诉我为什么?
我为什么关心:
我正在尝试在我的 React Native 应用程序中使用斯坦福 JavaScript 加密库,但它在导入时失败,因为它使用此模式来选择性地使用crypto
内置节点。(源代码)
似乎其他人之前遇到过这个问题:https ://github.com/davidbau/seedrandom/pull/44
javascript - 基准测试 WebCrypto 比第三方库慢很多?
我正在评估 WebCrypto 性能与第三方加密库SJCL和Forge的比较。我希望 WebCrypto 会快得多,因为它是本机浏览器实现。这也已经在之前进行了基准测试,并且已经证明了这一点。
我使用Benchmark.js实现了以下测试,以测试密钥派生 (PBKDF2-SHA256)、加密 (AES-CBC) 和解密 (AES-CBC)。这些测试表明,网络加密的加密/解密速度明显慢于 SJCL 和 Forge。
基准代码
在这里看小提琴:https ://jsfiddle.net/kspearrin/1Lzvpzkz/
基准测试结果(铬)
基准测试结果 (Firefox)
这里发生了什么?为什么 WebCrypto 的加密/解密功能如此之慢?我是在错误地使用 Benchmark.js 还是什么?
angular - 在 Angular2 中使用 SJCL 库
在我的应用程序中,我想使用具有打字功能的“Stanford Javascript Crypto Library”,我还看到了https://github.com/Evgenus/sjcl-typescript-definitions。
我不明白如何在我的项目中使用它。我如何
sjcl.encrypt("password", "data")
在我的项目中使用该命令。
我正在使用 angular 4,angular-cli beta 2
我跑了npm install --save-dev @types/sjcl
tsconfig.app.json
javascript - 如何阻止我的加密库使用初始化向量?
我正在尝试使用斯坦福 Javascript 加密库(下面的链接)来加密一些数据,它在加密过程中使用随机生成的初始化向量,以便两个相同的输入永远不会产生相同的输出。不幸的是,我的项目要求两个相同的输入确实产生相同的输出,所以我不能使用初始化向量。是否有修改 SJCL 代码使其不使用 IV 的选项或方法?
我也一直在考虑 CryptoJS,另一个库,所以如果有人知道在 CryptoJS 中禁用 IV 的方法,那也可以。
SJCL 文档:http ://bitwiseshiftleft.github.io/sjcl/
Github 上的 CryptoJS:https ://github.com/brix/crypto-js
bignum - 有没有办法从一个整数字符串创建一个 sjcl.js bignum (bn)?
sjcl.js 提供了用于读取十六进制字符串和 utf8Strings 的编解码器,但它不提供用于读取 base-10 整数字符串的编解码器。我正在尝试读取来自另一个程序的用于 ECC 点生成的私钥(从编解码器到 bitArray,然后从 bitArray 到 bn)。似乎是一个奇怪的疏忽,让我相信它就在某个地方,只是错过了它。
谢谢,
彼得
javascript - SJCL 库解密问题
当我尝试使用 SJCL 库进行简单解密时遇到问题。我可以很好地加密数据。
在这个例子中,我保存了这样的加密数据:
我将数据 ajax 到数据库。现在当我去解密数据时,我从我的数据库中提取 sjcl JSON 字符串并通过这个函数运行它:
我在控制台上收到以下错误,它不会超出该 sjcl.decrypt 语句。
我肯定在这里做一些明显错误的事情吗?