相关疑难解决方法(0)

如何从字符串创建Web Worker

如何使用从字符串创建Web worker(通过POST请求提供)?

我能想到的一种方法,但我不确定如何实现它,是通过从服务器响应创建数据URI,并将其传递给Worker构造函数,但我听说有些浏览器不允许这,因为相同的原产地政策.

MDN陈述围绕数据URI的原始政策的不确定性:

注意:作为Worker构造函数的参数传递的URI必须遵循同源策略.目前,浏览器供应商对数据URI是否来源不一致存在分歧; Gecko 10.0(Firefox 10.0/Thunderbird 10.0)及更高版本确实允许数据URI作为工作人员的有效脚本.其他浏览器可能不同意.

这里还有一篇关于whatwg讨论它的帖子.

javascript web-worker data-uri

76
推荐指数
3
解决办法
3万
查看次数

如何使用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
查看次数