Javascript CryptoJS DES(ECB)加密-Base64编码-未生成正确的结果

Javascript CryptoJS DES(ECB)加密-Base64编码-未生成正确的结果,javascript,encryption,cryptography,cryptojs,des,Javascript,Encryption,Cryptography,Cryptojs,Des,我们有一个第三方供应商,它指示我们为他们的API生成身份验证令牌 这很好,但我们现在正处于需要以编程方式生成这些令牌的阶段。它需要是DES格式,ECB模式,用Base64编码 我们尝试了CryptoJS javascript库,但结果与的输出不匹配 我哪里出错了?使用PHP方法mcyrpt\u encrypt,该方法使用零字节填充。发布的代码使用PKCS7填充。要使用零字节填充,代码中的填充必须更改为CryptoJS.pad.ZeroPadding 但是如果应该使用Pkcs7填充,那么这不是一个

我们有一个第三方供应商,它指示我们为他们的API生成身份验证令牌

这很好,但我们现在正处于需要以编程方式生成这些令牌的阶段。它需要是DES格式,ECB模式,用Base64编码

我们尝试了CryptoJS javascript库,但结果与的输出不匹配

我哪里出错了?

使用PHP方法
mcyrpt\u encrypt
,该方法使用零字节填充。发布的代码使用PKCS7填充。要使用零字节填充,代码中的填充必须更改为
CryptoJS.pad.ZeroPadding

但是如果应该使用Pkcs7填充,那么这不是一个好的选择,因为无法设置填充。在这种情况下,另一种选择是

另一个错误源是密钥的格式。然而,由于在发布的代码中没有显示密钥生成,因此无法说明这是否也是一个问题。密钥作为
WordArray
传递,而不是作为字符串传递,这一点很重要。如果它是作为字符串传递的,那么它将被解释为生成实际密钥的密码短语,请参阅

下面的代码

var key = CryptoJS.enc.Latin1.parse("12345678"); // key as WordArray
var text = "The quick brown fox jumps over the lazy dog";

var encrypted = CryptoJS.DES.encrypt(text, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.ZeroPadding // Zero-Byte-Padding
});

var finalEncrypted = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
console.log(finalEncrypted); 
有输出吗

XokzhoQlYFGG7ZfTNqdvr0QGMsFF24oSZ5v+vsPDNlPA+GbJ2peAY/7pNhpOerOV 

根据输出。

非常感谢完美的解决方案!我只需要零填充
XokzhoQlYFGG7ZfTNqdvr0QGMsFF24oSZ5v+vsPDNlPA+GbJ2peAY/7pNhpOerOV