使用javascript的文件的MD5哈希

Mus*_*ang 2 javascript md5 file-upload

我必须从前端上传文件并计算该文件的md5哈希值。我尝试使用crypto.js生成md5,但对于图像,它给了我错误的md5。我看到了一个名为onlinemd5.com的网站,而这正是我所需要的。

谁能帮助我如何使用JavaScript计算文件(文本文件,图像,视频等)的md5哈希值?是否可以从http://onlinemd5.com下载代码并实施该代码?

注意:我尝试了如何使用javascript计算文件的md5哈希中的一些建议,但没有用。


$scope.upld = function(element){
    $scope.files = element.files;
    var file = $scope.files[0];
    var reader = new FileReader();
    reader.onload = function(){
        $scope.md5_val = CryptoJS.MD5(reader.result);
        $scope.upload_file();
        $scope.$apply();
    };
    reader.readAsBinaryString(file);
};
Run Code Online (Sandbox Code Playgroud)

crypto.js没有正确计算图像md5。我没有尝试sparkmd5 js。

Phy*_*sis 5

我使用它来工作reader.readAsArrayBuffer()

$(inputElement).change(
    function () {
        var reader = FileReader();

        reader.addEventListener(
            'load',
            function () {
                var wordArray = CryptoJS.lib.WordArray.create(this.result);
                console.log(CryptoJS.MD5(wordArray));
            }
        );

        reader.readAsArrayBuffer(this.files[0]);
    }
);
Run Code Online (Sandbox Code Playgroud)

我不得不从CryptoJS添加一个额外的依赖项:http ://crypto-js.googlecode.com/svn/tags/3.1.2/build/components/lib-typedarrays-min.js

jsFiddle在这里


Mus*_*ang 5

我使用了https://github.com/satazor/SparkMD5中的 Spark-md5.js 它非常棒而且速度相当快。如果有人试图计算任何上传文件的 md5,这是最好的解决方案。