一般pc/android/ios都有各自的库来计算文件hash的,比如android这个:
https://stackoverflow.com/questions/5980658/how-to-sha1-hash-a-string-in-android
另外,如果是web端的话,一般不建议采用分块上传,因为通过javascript来计算文件hash效率是比较低的,而且较耗内存;所以行业一般做法是,web端支持上传的文件大小有限制,比如最大不超过500MB, 然后采取普通上传的方式完成传输。
当然如果是要在web端进行文件hash计算的话, 一种方法可以通过CryptoJS库来完成, 比如:
<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script>
var reader = new FileReader();
reader.onload = function(event){
var res = event.target.result;
var sha1 = CryptoJS.SHA1(res).toString();
console.log(sha1);
};
reader.readAsBinaryString(file);
</script>