从JavaScript中的Blob/文件创建SHA-256哈希 [英] Create SHA-256 hash from a Blob/File in javascript
问题描述
我需要从浏览器内部的文件(〜6MB)创建SHA-256摘要.到目前为止,我设法做到的唯一方法是这样的:
I need to create a SHA-256 digest from a file (~6MB) inside the browser. The only way that I've managed to do it so far was like this:
var reader = new FileReader();
reader.onload = function() {
// this gets read of the mime-type data header
var actual_contents = reader.result.slice(reader.result.indexOf(',') + 1);
var what_i_need = new jsSHA(actual_contents, "B64").getHash("SHA-256", "HEX");
}
reader.readAsDataURL(some_file);
虽然此方法可以正常工作,但问题在于它的运行速度非常慢. 6MB的文件花了大约2-3秒的时间.我该如何改善呢?
While this works correctly, the problem is that it's very slow. It took ~2-3 seconds for a 6MB file. How can I improve this?
推荐答案
您可能想看看斯坦福JS加密库
You may want to take a look at the Stanford JS Crypto Library
从网站上:
SJCL是安全的.它使用行业标准的128、192或256位AES算法; SHA256哈希函数; HMAC认证码; PBKDF2密码增强器;以及CCM和OCB身份验证加密模式.
SJCL is secure. It uses the industry-standard AES algorithm at 128, 192 or 256 bits; the SHA256 hash function; the HMAC authentication code; the PBKDF2 password strengthener; and the CCM and OCB authenticated-encryption modes.
SJCL的测试页显示了需要多长时间.
SJCL has a test page that shows how long it will take.
184毫秒(SHA256迭代).而从分解中获得SHA-256的时间为50毫秒.
184 milliseconds for a SHA256 iterative. And 50 milliseconds for a SHA-256 from catameringue.
测试页面
示例代码:
加密数据:
sjcl.encrypt("password", "data")
解密数据:sjcl.decrypt("password", "encrypted-data")
这篇关于从JavaScript中的Blob/文件创建SHA-256哈希的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!