我正在尝试使用 WebCrypto 加密文本。我将结果转换为 utf8 字符串,然后将其转换为十六进制。加密/解密有效。但是,我想将数据转换为十六进制。当我尝试转换为十六进制并返回时,结果是不同的。
这是小提琴(使用 Chrome):https ://jsfiddle.net/yxp01v5g/
测试代码在这里:
var text = "hello world";
var key = App.crypto.generateKey(16);
App.crypto.encrypt(text, key, function(encryptedText, iv){
console.log("encrypted text:", encryptedText, "iv", iv);
var encryptedTextHex = convertUtf8StringToHex(encryptedText);
console.log("encrypted text hex", encryptedTextHex);
var backToUtf8 = convertHexToUtf8(encryptedTextHex);
console.log("Back to utf8", backToUtf8);
console.assert(encryptedText == backToUtf8);
})
如您所见,我正在获取结果,将其转换为十六进制,然后将其转换回 utf8,希望它与原始结果相同。然而,事实并非如此。
谁能告诉我到底我做错了什么?