javascript - SJCL "Cannot read property ' 替换“未定义”的问题

标签 javascript encryption aes sjcl

使用Sjcl我尝试编写一个小服务,从我的 JavaScript 应用程序发送和接收加密数据。

可悲的是,sjcl documentation缺乏有关如何处理其 AES 加密数据的信息。 他们的encrypt method返回一个包含多个属性的对象,我只能猜测其中的属性是什么。

{"iv":"i0t5BttfXwtY6hxuFSZxJg==",
"v":1,
"iter":1000,
"ks":128,
"ts":64,
"mode":"ccm",
"cipher":"aes",
"salt":"MZ8hpbz+5hU=",
"ct":"n5mR5jwawYwsaUV0xbcYXrcCXPWjR5qMG23qU5Spguz4jpjG5QdFMWSf"}

我可以识别iterkstsmodecipher。我的猜测是 ct 是密文,代表加密后的数据。但是 viv 是什么?

我尝试解密我的密文,将 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

我如何使用他们的 decrypt 解密我的 ct方法? 任何人有这方面的经验并可以举一个简短的例子吗?

最佳答案

加密/解密使用默认参数:

var result = sjcl.json.encrypt(
  'pw123', 
  '{text: "this should be decrypted"}'
);

var originalText = sjcl.json.decrypt(
  'pw123', 
  result);

But what is v and iv?

v 可能是密文的版本信息,以便后续版本的 SJCL 可以解密它。它只是设置为 1 并且从未在 code 中使用。 .

iv 是大多数分组密码模式(例如 CCM)所需的初始化向量。对于 AES,它的长度为 16 个字节,或者简称为 block 大小。

关于javascript - SJCL "Cannot read property ' 替换“未定义”的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28364434/

相关文章:

java - 双重加密/解密失败但单一加密/解密失败 - AES 256 位

javascript - react 备忘录组件并在将函数作为 Prop 传递时重新渲染

javascript - Node crypto.createDecipher 错误的最终 block 长度错误

Javascript 到空白文本框值不会工作,但 jquery 确实

ruby - AES 在 ColdFusion 中加密,在 ruby​​ 中解密

c++ - OpenSSL ssl_accept() 错误 5

python - 与客户端证书的 SSL 连接

c++ - 查找表未按预期工作

javascript - Google Nexus 网站中使用的 JS 插件的名称

javascript - 使用 gulp-modernizr 如何指定功能选项