SJCL的问题“;无法读取属性'替换'“未定义”;
Problems with SJCL "Cannot read property 'replace' of undefined"
使用Sjcl,我尝试编写一个小服务,从我的javascript应用程序发送和接收加密数据。
遗憾的是,sjcl文档缺少关于如何处理其AES
加密数据的信息。他们的encrypt方法返回一个包含服务器属性的对象,我只能猜测它是什么。
{"iv":"i0t5BttfXwtY6hxuFSZxJg==",
"v":1,
"iter":1000,
"ks":128,
"ts":64,
"mode":"ccm",
"cipher":"aes",
"salt":"MZ8hpbz+5hU=",
"ct":"n5mR5jwawYwsaUV0xbcYXrcCXPWjR5qMG23qU5Spguz4jpjG5QdFMWSf"}
我可以识别iter
、ks
、ts
、mode
、cipher
和salt
。我的猜测是ct
是密文,代表加密的数据。但什么是v
和iv
?
我试着解密我的密文,把ct
作为参数,甚至试着把整个结果作为参数,但它总是会产生错误:
var result = sjcl.json.encrypt(
'pw123',
'{text: "this should be decrypted"}',
parameters,
rp
);
var originalText = sjcl.json.decrypt(
'pw123',
result.ct,
parameters,
rp);
// Results in:
// Uncaught TypeError: Cannot read property 'replace' of undefined
如何使用他们的解密方法解密我的ct
?有人对此有任何经验,可以举一个简单的例子吗?
加密/解密使用默认参数:
var result = sjcl.json.encrypt(
'pw123',
'{text: "this should be decrypted"}'
);
var originalText = sjcl.json.decrypt(
'pw123',
result);
但什么是
v
和iv
?
v
可能是密文的版本信息,以便SJCL的后续版本可以对其进行解密。它只设置为1,从不在代码中使用。
CCD_ 16是诸如CCM之类的大多数分组密码模式所需要的初始化向量。对于AES,它是16字节长,或者仅仅是块大小。
我的示例中的问题是,我试图访问result.ct
,但结果是stringified JSON
,因此访问它的属性ct
显然返回了undefined
。
在我的另一次尝试中,我通过传递parameters
来覆盖参数。在不传递额外参数的情况下进行解密是有效的-初始参数已经在result
字符串化JSON中给出。
更新后的小提琴在这里:http://jsfiddle.net/e5rqogm3/1/
相关文章:
- angular2形式-无法读取未定义的属性替换
- 无法读取未定义的属性“替换” - 替换 JS 生成的 HTML 中的文本
- 替换匹配函数给出了未定义的错误,但它与替换一起工作
- 无法读取未定义的属性替换
- 另一个未捕获的类型错误::无法读取属性'替换'的未定义
- SJCL的问题“;无法读取属性'替换'“未定义”;
- React Uncaught TypeError:无法读取属性'替换'的未定义
- 无法读取属性'替换'json中未定义的
- 我收到此错误:无法在 String.toJadenCase 调用未定义的方法“替换”
- jquery autocomplete 无法读取未定义的属性“替换”
- 未捕获的类型错误:无法调用未定义的下划线.js的方法“替换”
- 角度:无法调用未定义的Android浏览器的方法“替换”
- 如何在数组对象中用空字符串替换未定义的值
- 未捕获的类型错误:无法读取属性'替换'的未定义-下划线
- 无法获取属性'替换'的未定义-仅在IE9中
- 在我为其他值使用替换函数之后,对变量进行未定义.在jquery中
- 未捕获的类型错误:无法调用未定义的方法“替换”
- 未捕获的类型错误:无法调用未定义的方法“替换”
- jQuery IE9-10:无法获得未定义或空引用的属性替换
- JavaScript未定义替换为null