Javascript 使用JS在文件上加密JS.MD5
我想计算客户端文件的MD5。我已经使用cryptoJS.MD5完成了。它在任何字符串输入上都能正常工作,但在文件中不能正常工作。你能帮我知道我错过了什么吗。提前谢谢Javascript 使用JS在文件上加密JS.MD5,javascript,html,file-upload,md5,Javascript,Html,File Upload,Md5,我想计算客户端文件的MD5。我已经使用cryptoJS.MD5完成了。它在任何字符串输入上都能正常工作,但在文件中不能正常工作。你能帮我知道我错过了什么吗。提前谢谢 <html> <head> <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js"></script> <script> functi
<html>
<head>
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/md5.js"></script>
<script>
function fn()
{
var reader = new FileReader();
reader.onloadend=function(){
text = (reader.result);
reader.readAsBinaryString(document.getElementById("files").files[0]);
var hash1 = CryptoJS.MD5(text);
console.log("hash1="+hash1.toString());
}
var hash = CryptoJS.MD5("Message");
console.log("hash=" + hash.toString());
alert("hi");
}
</script>
</head>
<body>
<form name="myform" id="myform" method="post" action="" enctype="multipart/form-data">
<input type="file" name="files" id="files">
<input type="submit" onclick="fn()">
</form>
</body>
</html>
哎呀。这里有几个问题 首先,表单提交,因此,一旦页面刷新,您登录到控制台的任何内容都将消失。去掉表单标签;毕竟,您实际上并没有向服务器提交任何内容 第二,开始读取文件readAsBinaryString的行位于读取完成时调用的回调中。。。因此,文件的读取实际上从未开始。将该行移到回调之外 最后,JavaScript实际上没有二进制字符串类型。尽管如此,我们所处理的二进制字符串仍然是UTF-16字符。但是CryptoJS无法判断您的UTF-16字符串是否表示二进制数据。因此,您必须明确说出要使用的字节编码字符:
CryptoJS.enc.Latin1.parse(text)