Javascript CryptoJS DES(ECB)加密-Base64编码-未生成正确的结果
我们有一个第三方供应商,它指示我们为他们的API生成身份验证令牌 这很好,但我们现在正处于需要以编程方式生成这些令牌的阶段。它需要是DES格式,ECB模式,用Base64编码 我们尝试了CryptoJS javascript库,但结果与的输出不匹配 我哪里出错了?使用PHP方法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填充,那么这不是一个
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