RNCryptor JS 简单案例失败
RNCryptor JS simple case fails
我已在 Objective-C 中成功使用 RNCryptor,现在需要从 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.
抛出错误“Uncaught CORRUPT: pkcs#5 padding corrupt”
我已经尝试了各种选项对象,但我认为没有选项应该同时适用于加密和解密。改变输入字符串和密码也没有好处。有什么想法吗?
/*
Takes password string and plaintext bitArray
options:
iv
encryption_salt
html_salt
Returns ciphertext bitArray
*/
RNCryptor.Encrypt = function(password, plaintext, options) {
plaintext
是位数组吗?如果您传递的是 UTF-8 字符串,则需要使用 sjcl.codec.utf8String.toBits
对其进行转换。还有用于十六进制和 base64 编码的编解码器。请参阅 SJCL 文档。
最新版本的 SJCL 将接受字符串并将它们自动转换为 bitArrays,但在我完成 v4 格式的工作(应该在 2015 年底之前)之前,我可能不会自己再次接触 JS 实现。我很乐意接受拉取请求。
请注意,RNCryptor-js 与任何其他实现(包括 ObjC 实现)都不完全兼容。 JavaScript 处理 v3 格式所需的 10,000 次 PBKDF2 迭代太慢,因此默认使用 1,000 次。这意味着你必须修改另一边的代码来匹配(或者配置 JS 使用 10,000,但处理密码需要 10 倍的时间)。在 RNCryptor.h
.
中查找两个 .rounds
配置设置
v4 格式的主要目标之一是使迭代计数可配置,使 JavaScript 能够互操作(不幸的是,通过显着降低加密的安全性,但这都是 JavaScript 可以今天处理)。
我已在 Objective-C 中成功使用 RNCryptor,现在需要从 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.
抛出错误“Uncaught CORRUPT: pkcs#5 padding corrupt”我已经尝试了各种选项对象,但我认为没有选项应该同时适用于加密和解密。改变输入字符串和密码也没有好处。有什么想法吗?
/*
Takes password string and plaintext bitArray
options:
iv
encryption_salt
html_salt
Returns ciphertext bitArray
*/
RNCryptor.Encrypt = function(password, plaintext, options) {
plaintext
是位数组吗?如果您传递的是 UTF-8 字符串,则需要使用 sjcl.codec.utf8String.toBits
对其进行转换。还有用于十六进制和 base64 编码的编解码器。请参阅 SJCL 文档。
最新版本的 SJCL 将接受字符串并将它们自动转换为 bitArrays,但在我完成 v4 格式的工作(应该在 2015 年底之前)之前,我可能不会自己再次接触 JS 实现。我很乐意接受拉取请求。
请注意,RNCryptor-js 与任何其他实现(包括 ObjC 实现)都不完全兼容。 JavaScript 处理 v3 格式所需的 10,000 次 PBKDF2 迭代太慢,因此默认使用 1,000 次。这意味着你必须修改另一边的代码来匹配(或者配置 JS 使用 10,000,但处理密码需要 10 倍的时间)。在 RNCryptor.h
.
.rounds
配置设置
v4 格式的主要目标之一是使迭代计数可配置,使 JavaScript 能够互操作(不幸的是,通过显着降低加密的安全性,但这都是 JavaScript 可以今天处理)。