小编lea*_*One的帖子

如何使用FileReader读取二进制文件,以便在CryptoJS中使用SHA-256对其进行哈希处理?

如何使用javascript将UTF-8字符串转换为Latin1编码的字符串?

这是我想要做的:

  1. 我得到一个文件,通过读取为arraybuffer将其拆分为块
  2. 然后,我将arraybuffer解析为字符串
  3. 并使用以下代码将其传递给cryptoJS进行哈希计算:

    cryptosha256 = CryptoJS.algo.SHA256.create();
    cryptosha256.update(text);
    hash = cryptosha256.finalize();
    
    Run Code Online (Sandbox Code Playgroud)

这一切都适用于文本文件.使用代码散列非文本文件(image/.wmv文件)时出现问题.我在另一篇博客中看到,CryptoJS作者要求使用Latin1格式而不是UTF-8发送字节,这就是我被困住的地方.

不确定,如何在javascript中使用arraybuffer中的Latin1格式生成字节(或字符串)?

$('#btnHash').click(function () {
    var fr = new FileReader(), 
        file = document.getElementById("fileName").files[0];
    fr.onload = function (e) {
        calcHash(e.target.result, file);
    };
    fr.readAsArrayBuffer(file);
});
function calcHash(dataArray, file) {
    cryptosha256 = CryptoJS.algo.SHA256.create();
    text = CryptoJS.enc.Latin1.parse(dataArray);
    cryptosha256.update(text);
    hash = cryptosha256.finalize();
}
Run Code Online (Sandbox Code Playgroud)

javascript utf-8 character-encoding latin1 cryptojs

5
推荐指数
1
解决办法
2610
查看次数

标签 统计

character-encoding ×1

cryptojs ×1

javascript ×1

latin1 ×1

utf-8 ×1