javascript - 使用javascript的文件的MD5哈希

标签 javascript file-upload md5

我必须从前端上传一个文件并计算该文件的 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。

最佳答案

我使用 reader.readAsArrayBuffer() 让它开始工作:

$(inputElement).change(
    function () {
        var reader = new FileReader();
        
        reader.addEventListener(
            'load',
            function () {
                var wordArray = CryptoJS.lib.WordArray.create(this.result);
                console.log(CryptoJS.MD5(wordArray));
            }
        );
        
        reader.readAsArrayBuffer(this.files[0]);
    }
);
我不得不从 CryptoJS 添加一个额外的依赖项:https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js
jsFiddle here .

关于javascript - 使用javascript的文件的MD5哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28437181/

相关文章:

javascript - Meteor js .allow 列表未显示

javascript - jQuery 有 "exists"函数吗?

swift - amazon S3 Swift - 简单的上传需要很长时间,最终没有出现在桶中

md5 - 是否可以从一种哈希值转换为另一种哈希值?

security - md5的碰撞率是多少?

javascript - 使用 jquery knockout js 检索头像

javascript - 从 WCF 服务调用 HTML 函数

javascript - 如何检测字符串中间的两个空格?

javascript - 如何限制.exe.png或将.exe文件重命名为png文件以在 Angular 8中上传

javascript - 如何使用 javascript 或 Jquery 获取 IE 浏览器的文件大小?