gpt4 book ai didi

javascript - ECB 模式下的 CryptoJS DES

转载 作者:行者123 更新时间:2023-11-29 18:10:37 27 4
gpt4 key购买 nike

我正在处理需要 DES ECB 和 PKCS1 填充的第三方网关。所以这段代码不是我自己用的,而是给其他人发消息的。

在您问他们为什么在 Internet 上使用对称 key 加密之前:我首先必须向他们发送使用 SHA 算法加密的对称 key ,然后才使用 DES key 对消息进行编码。这不是我的想法。但这对我的项目等非常重要。

我会做我自己的填充函数,所以请不要在 NoPadding 选项上指点我。这段代码只是为了测试 DES 在我这边是否工作正常。

我正面临 node.js 中 crypt-js 模块的奇怪(对我来说)行为这是代码:

var C = require('crypto-js'),
source = 'abcdefghabcdefgh',
key = '1234test';

var encrypted = C.DES.encrypt(
C.enc.Utf8.parse(source),
C.enc.Hex.parse(key),
{ mode: C.mode.ECB, padding: C.pad.NoPadding }
).ciphertext.toString();

var decrypted = C.DES.decrypt(
C.lib.CipherParams.create({ ciphertext: C.enc.Utf8.parse(encrypted) }),
C.enc.Hex.parse(key),
{ mode: C.mode.ECB, padding: C.pad.NoPadding }
).toString();

if (source === decrypted) {
console.log('Glad :)');
} else {
console.log('Sad :(');
}

代码不会以这种方式变得高兴。Crypto-JS 和所有其他模块都是最新版本。有人可以给我解释一下吗?

最佳答案

据我所知,您有两个问题:

  1. key 是 Utf8,必须这样解析
  2. ciphertext.toString()实际上是一个包含Base 64编码密文的字符串,所以解密时需要解析为Base64

正如 Maarten Bodewes 在评论中所说,由于您没有使用填充,因此您必须确保您的明文是 8 字节的倍数。

关于javascript - ECB 模式下的 CryptoJS DES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27690925/

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