用Python及PHP与Java解读同一数据,解结不同请问为什么?,pythonjava,测试代码及结果如下:PH


测试代码及结果如下:

PHP:

echo md5(file_get_contents('test.torrent'));//e699b0e7535cebc1b10de1613d6797fb

Python:

print hashlib.md5(open("test.torrent").read()).hexdigest()#7cc752c88ae69677afe59ee7c3300e9d

Javascript:

var dragAndDrop = function(){    if (!window.File || !window.FileList || !window.FileReader) {        return false;    }    var ignoreDrag = function(e) {        e.originalEvent.stopPropagation();        e.originalEvent.preventDefault();    }    var drop = function(e) {        ignoreDrag(e);        var dt = e.originalEvent.dataTransfer;        var droppedFiles = dt.files;        $.each(droppedFiles, function(index, file) {            decodeFile(file);        });    }    $('body')    .on('dragenter', ignoreDrag)    .on('dragover', ignoreDrag)    .on('drop', drop);};var decodeFile = function(file) {    var fileReader = new FileReader();    var fileData = fileReader.readAsBinaryString(file);    fileReader.onload = function(){        var fileData = this.result;        console.log(CryptoJS.MD5(fileData));    }}dragAndDrop(); //393fe44680d69ea00fd0a4a2fb3fa8c5

根据你在问题评论中补充的信息,Python 2 版与 PHP 版的不同很容易理解了:

我做了一下测试,两种python的方法,一种javascript的方法,加一种是Linux shell命令,得出来的MD5都是一样的。PHP没测试,但我相信也应该一样。python方法一:

import md5m = md5.new("xxx\n")print m.hexdigest()结果是:6de9439834c9147569741d3c9c9fc010

python方法二:

import hashlibh = hashlib.md5("xxx\n")print h.hexdigest()结果也是:6de9439834c9147569741d3c9c9fc010

javascript的MD5,我从这下载的:http://www.myersdaily.org/joseph/javascript/md5.js,第101行有个语法错误,加上var即可。得出的结果跟上面的结果一样。

Linux shell:

md5sumxxx回车后按ctrl + D

打印出来的结果同上。

编橙之家文章,

评论关闭