首页 文章

使用javascript的文件的MD5哈希

提问于
浏览
2

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

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

注意:我尝试了How to calculate md5 hash of a file using javascript中的一些建议,但没有用 .


$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);
};

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

2 回答

  • 2

    我使用了来自https://github.com/satazor/SparkMD5的spark-md5.js . 它非常棒且非常快 . 如果某人试图计算任何上传文件的md5,这是最好的解决方案 .

  • 3

    我使用 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]);
        }
    );
    

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

    jsFiddle here .

相关问题