gpt4 book ai didi

javascript - RNCryptor JS 简单案例失败

转载 作者:行者123 更新时间:2023-12-03 09:43:06 24 4
gpt4 key购买 nike

我用过RNCryptor在 Objective-C 中成功,现在需要从 Javascript 加密我的 iOS 应用程序的数据。但是,这个简单的测试失败了......

<script type="text/javascript" src="js/utils/sjcl.js"></script>
<script type="text/javascript" src="js/utils/rncryptor.js"></script>

function testEncodeEncrypt_RN(plaintext) {
var secret = "rosebud";
var encrypted = RNCryptor.Encrypt(secret, plaintext);
var decrypted = RNCryptor.Decrypt(secret, encrypted);
console.log("decrypted to " + decrypted);
}

...sjcl.js 抛出错误“未捕获损坏:pkcs#5 填充损坏”。

我尝试了各种选项对象,但我认为没有选项应该同时适用于加密和解密。改变输入字符串和 secret 也没有什么好处。有什么想法吗?

最佳答案

/*
Takes password string and plaintext bitArray
options:
iv
encryption_salt
html_salt
Returns ciphertext bitArray
*/
RNCryptor.Encrypt = function(password, plaintext, options) {

纯文本是位数组吗?如果您传递 UTF-8 字符串,则需要使用 sjcl.codec.utf8String.toBits 进行转换。还有用于十六进制和 Base64 编码的编解码器。请参阅SJCL文档。

最新版本的 SJCL 将接受字符串并将其自动转换为 bitArray,但在我完成 v4 格式的工作之前(应该是在 2015 年底之前),我可能不会再次接触 JS 实现。我很高兴接受拉取请求。

请注意,RNCryptor-js 与任何其他实现(包括 ObjC 实现)并不完全兼容。 JavaScript 太慢,无法处理 v3 格式所需的 10,000 次 PBKDF2 迭代,因此它默认使用 1,000 次。这意味着你必须修改另一侧的代码来匹配(或者将 JS 配置为使用 10,000,但处理密码需要花费 10 倍的时间)。在 RNCryptor.h 中查找两个 .rounds 配置设置。

v4 格式的主要目标之一是使迭代计数可配置,以使 JavaScript 能够互操作(不幸的是,这大大降低了加密的安全性,但这只是 JavaScript 目前可以处理的)。

关于javascript - RNCryptor JS 简单案例失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com