javascript - 使用 AES 的 CryptoJS 库时解密输出不正确

标签 javascript encryption cryptography

我正在尝试使用 AES 加密和解密一些随机数据。我可以使用以下代码成功加密数据,

function padString(source) {
  var paddingChar = 'x';
  var size = 16;
  var padLength = size - source.length;

  for (var i = 0; i < padLength; i++) source += paddingChar;

  return source;
}

var key = CryptoJS.enc.Hex.parse('dassdadsasad');
var iv = CryptoJS.enc.Hex.parse('fedcba9876543210');
var message = "0x72648174091c3f7cd41773f636ca9a15756798";
var padMsg = padString(message);

var encrypted = CryptoJS.AES.encrypt(padMsg, key, {
  iv: iv,
  padding: CryptoJS.pad.NoPadding,
  mode: CryptoJS.mode.CBC
});

但是当我尝试解密它时,

var decrypted = CryptoJS.AES.decrypt(encrypted, key, {
  iv: iv,
  padding: CryptoJS.pad.NoPadding,
  mode: CryptoJS.mode.CBC
});

我得到了错误的解密输出,而不是取回我的纯文本。 例如,这是输出,

Message: "0x72648174091c3f7cd41773f636ca9a15756798" 40

Padded message: "0x72648174091c3f7cd41773f636ca9a15756798" 40

Encrypted: 8qCjEtSLhchErbhJu8jo/xy8T5T1eSAFazuWLKwKdAW9F0ZUjJLlZw==

Encrypted text: f2a0a312d48b85c844adb849bbc8e8ff1cbc4f94f57920056b3b962cac0a7405bd1746548c92e567

Decrypted c748c55c0212d1688e79de5f00379eb0d802789501e6cbab3e6255b902eaa528a40d32123bcd0ce1

有人可以告诉我我做错了什么或者我是否遗漏了什么吗?

这是现场演示,https://jsfiddle.net/4zb9hrxb/267/

最佳答案

您的 key 无效:

var key = CryptoJS.enc.Hex.parse('dassdadsasad');

首先没有多大意义,因为 s 不存在于十六进制表示法中。要么将 256 位 key 指定为十六进制,如下所示:

key = CryptoJS.enc.Hex.parse("123456789012345678901234567890ab");

(注意:仅十六进制字符)或让 CryptoJS 从密码短语派生 key :

var key = 'dassdadsasad';

关于javascript - 使用 AES 的 CryptoJS 库时解密输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46678937/

相关文章:

openssl - 使用 openssl aes 256 cbc 对加密文件进行 Java 解密

encryption - 压缩后的数据加密标准 (DES) 更大?

python - 使用 Node.js AES CTR 加密并使用 PyCrypto 解密

javascript - 为什么 Object.create polyfill 使用 Function 的原型(prototype)而不是简单的 __proto__ of Object?

security - 软件安全模块/工具包替代 HSM 用于开发加密功能

javascript - Routing.navigate 与 document.location.hash

c# - 这足以签署数据吗?

c - Feige Fiat Shamir 计划不起作用

Javascript 变量名称作为 Json 对象名称

javascript - JSHint 与 ECMAScript6 : method is not defined