gpt4 book ai didi

javascript - 摘要使用不同的数据返回相同的值

转载 作者:行者123 更新时间:2023-11-28 18:31:41 25 4
gpt4 key购买 nike

我正在使用 Javascript Forge 来获取一些数据的摘要,现在正在使用不同的文档进行实验,并且以下代码行始终返回相同的哈希值:

function obtainData() {
getDocument(getHash);
}

function getDocument(callback) {
var file = dInput.files[0];
var reader = new FileReader();
reader.onload = function(e){
var contents = e.target.result;
var array = callback(contents)
console.log(array.digest().toHex());
}
reader.readAsArrayBuffer(file);
}

function getHash(buffer) {
digestHash = forge.md.sha256.create();
digestHash.update(buffer);
//always the same with different bytes everytime
console.log(digestHash.digest().toHex());
return digestHash;
}

为什么会发生这种情况?我错过了什么吗?

尝试使用不同的浏览器,但仍然是相同的digestHash值

最佳答案

Forge 库通常与 Uint8 一起使用。将内容转换为 Uint8Array 应该可以正常工作

reader.onload = function(e){
var contents = e.target.result;
var binary = arrayBufferToString(contents);
var array = callback(binary)
console.log(array.digest().toHex());
}


function arrayBufferToString( buffer ) {
var binary = '';
var bytes = new Uint8Array( buffer );
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode( bytes[ i ] );
}
return binary;
}

使用WebCryptographiApi也是一个很好的解决方案

function obtainData() {
getDocument(getHash);
}

function arrayBufferToString( buffer ) {
var binary = '';
var bytes = new Uint8Array( buffer );
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode( bytes[ i ] );
}
return binary;
}

function getDocument(callback) {
var file = dInput.files[0];
var reader = new FileReader();
reader.onload = function(e){
var contents = e.target.result;
var array = callback(contents)
console.log(array.digest().toHex());
}
reader.readAsArrayBuffer(file);
}

function getHash(buffer) {
digestHash = forge.md.sha256.create();
digestHash.update(arrayBufferToString(buffer));
return digestHash;
}
<script src="https://cdn.rawgit.com/artjomb/96b970358e20410fa64daa2e844aeb0f/raw/5375e7171ef297d436d65b962149dcc0e1960b2b/forge_v0.6.39.min.js"></script>
<input id="dInput" type="file">
<button onclick="obtainData()">hash</button>

关于javascript - 摘要使用不同的数据返回相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37870031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com