我目前一直在尝试使用 javascript 从我的浏览器中散列图像。但是,我一直在对从 HTML 中的 canvas 元素中检索到的 dataURL 或像素数据的字符串进行散列处理。这显然与我想要做的散列图像的原始数据不同。
例如,将用于 php 哈希文件函数中的同一图像的数据。
有谁知道我如何使用 javascript 访问这些原始图像数据以获取与我从 PHP hash_file($file) 获得的结果哈希值等效的哈希值?
谢谢!
我目前一直在尝试使用 javascript 从我的浏览器中散列图像。但是,我一直在对从 HTML 中的 canvas 元素中检索到的 dataURL 或像素数据的字符串进行散列处理。这显然与我想要做的散列图像的原始数据不同。
例如,将用于 php 哈希文件函数中的同一图像的数据。
有谁知道我如何使用 javascript 访问这些原始图像数据以获取与我从 PHP hash_file($file) 获得的结果哈希值等效的哈希值?
谢谢!
您可以通过对该图像文件位置的 XHR 请求获取图像的原始数据。
var xhr = new XMLHttpRequest();
xhr.open('GET', '/my/image/file.png', true);
xhr.responseType = 'arraybuffer'; // this will accept the response as an ArrayBuffer
xhr.onload = function(buffer) {
var words = new Uint32Array(buffer),
hex = '';
for (var i = 0; i < words.length; i++) {
hex += words.get(i).toString(16); // this will convert it to a 4byte hex string
}
console.log(hex);
};
xhr.send();
之后,您可以使用任何您喜欢的散列算法。这是它们的库:https ://code.google.com/p/crypto-js/