js计算文件MD5值

百度百科解释

MD5

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

MD5算法具有以下特点
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被”压缩”成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

<html>  
<head>  
<meta charset="utf-8">
<script type="text/javascript" src="./spark-md5.js" ></script>  
</head>  

<body>  
<input type="file" id="file" onchange="calculate()" />  
<div id="box"></div>  
<!-- <button id="cal" type="button" onclick="calculate()">计算md5</button> -->  
</body>  

<script>  

function calculate(){  
    var fileReader = new FileReader(),  
        box=document.getElementById('box');  
        blobSlice = File.prototype.mozSlice || File.prototype.webkitSlice || File.prototype.slice,  
        file = document.getElementById("file").files[0],  
        chunkSize = 2097152,  
        // read in chunks of 2MB  
        chunks = Math.ceil(file.size / chunkSize),  
        currentChunk = 0,  
        spark = new SparkMD5();  

    fileReader.onload = function(e) {  
        console.log("read chunk nr", currentChunk + 1, "of", chunks);  
        spark.appendBinary(e.target.result); // append binary string  
        currentChunk++;  

        if (currentChunk < chunks) {  
            loadNext();  
        }  
        else {  
            console.log("finished loading");  
            box.innerText='MD5 hash:'+spark.end();  
            console.info("computed hash", spark.end()); // compute hash  
        }  
    };  

    function loadNext() {  
        var start = currentChunk * chunkSize,  
            end = start + chunkSize >= file.size ? file.size : start + chunkSize;  

        fileReader.readAsBinaryString(blobSlice.call(file, start, end));  
    };  

    loadNext();  
}  

</script>  
</html>  

示例demo:
百度云链接:http://pan.baidu.com/s/1sl2Ym5J 密码:nhqc

参考链接: http://blog.csdn.net/a258831020/article/details/45867191

csdn太恶心。再也不会往上传资源……

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值