6

我目前一直在尝试使用 javascript 从我的浏览器中散列图像。但是,我一直在对从 HTML 中的 canvas 元素中检索到的 dataURL 或像素数据的字符串进行散列处理。这显然与我想要做的散列图像的原始数据不同。

例如,将用于 php 哈希文件函数中的同一图像的数据。

有谁知道我如何使用 javascript 访问这些原始图像数据以获取与我从 PHP hash_file($file) 获得的结果哈希值等效的哈希值?

谢谢!

4

1 回答 1

5

您可以通过对该图像文件位置的 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/

于 2013-03-04T18:45:40.097 回答