我需要修改此(工作)代码,并用本机JS替换CryptoJS
函数。
变量b64encoded
具有正确的值,但我尝试使用本机代码(encodedIncorrect
)却没有。您可以帮助输入btoa
正确的输入吗?
正在运行,但是第三方库不能在我正在开发的平台上使用:
const encrypted = CryptoJS.HmacSHA1("message", "secret");
// encrypted = "0caf649feee4953d87bf903ac1176c45e028df16" << Hexadecimal encoded string
const b64encoded = CryptoJS.enc.Base64.stringify(encrypted);
// b64encoded = "DK9kn+7klT2Hv5A6wRdsReAo3xY="
无效,特别是btoa
:对二进制字符串的编码]
const encrypted_vendor = VENDOR.hmacSHA1("message", "secret") // Vendor-provided HMAC-SHA1 func // encrypted_vendor = "0caf649feee4953d87bf903ac1176c45e028df16" // Split hex string into two-character byte representations for binary conversion function splitHex(hexString) { let chunks = []; for (var i = 0, charsLength = hexString.length; i < charsLength; i += 2) { chunks.push(hexString.substring(i, i + 2)); } } // Convert hex characters to binary value function hexCharToBinary(value) { return (parseInt(value, 16).toString(2)).padStart(8, '0'); } binaryChunks = splitHex(encrypted) var binaryStr = "" binaryChunks.forEach(i => binaryStr += hexCharToBinary(i)) // binaryStr = "0000110010101111011001001001111111101110111001001001010100111101100001111011111110010000001110101100000100010111011011000100010111100000001010001101111100010110" encodedIncorrect = btoa(binaryStr) // encodedIncorrect = "MDAwMDExMDAxMDEwMTExMTAxMTAwMTAwMTAwMTExMTExMTEwMTExMDExMTAwMTAwMTAwMTAxMDEwMDExMTEwMTEwMDAwMTExMTAxMTExMTExMDAxMDAwMDAwMTExMDEwMTEwMDAwMDEwMDAxMDExMTAxMTAxMTAwMDEwMDAxMDExMTEwMDAwMDAwMTAxMDAwMTEwMTExMTEwMDAxMDExMA=="
我还使用此站点(https://cryptii.com/pipes/binary-to-base64)验证了二进制输出是正确的,当设置为二进制输入时,该站点将其编码为正确的base64。
我需要修改此(工作)代码,并用本机JS替换CryptoJS函数。变量b64encoded具有正确的值,但是我尝试使用本机代码(encodedIncorrect)却没有。你可以...
您正在编码二进制数字的字符串表示形式,而不是实际数据。