JavaScript MD5不同于Python/Bash md5sum

JavaScript MD5不同于Python/Bash md5sum,javascript,python,md5,md5sum,Javascript,Python,Md5,Md5sum,我有以下代码片段 function runUpload( file ) { key_name = file.name if( file.type === 'image/png' || file.type === 'image/jpg' || file.type === 'image/jpeg' || file.type === 'image/gif' ||

我有以下代码片段

    function runUpload( file ) {
        key_name = file.name
        if( file.type === 'image/png'  || 
                file.type === 'image/jpg'  || 
            file.type === 'image/jpeg' ||
                file.type === 'image/gif'  ||
                file.type === 'image/bmp'  ){
            var reader = new FileReader(),
                    image = new Image();
            reader.readAsDataURL( file );
            reader.onload = function( _file ){
                keyhash = md5(atob(_file.target.result.split(',')[1]));
                ZZ('key').el.src = _file.target.result;
                ZZ('key').el.style.display = 'block';
            } 
        } 
    }
拆分发生的原因是,如果我将其保留在以下位置:

_file.target.result
结果字符串将是:

data:text/plain;base64,SEVMTE8=
它使用

keyhash的值与我执行以下操作时的值不同:

cat file.png | md5sum
另外,在执行下面的python时,它为JS版本提供了不同的值,但与Linux相同

import hashlib

def md5Checksum(filePath):
    with open(filePath, 'rb') as fh:
        m = hashlib.md5()
        while True:
            data = fh.read(8192)
            if not data:
                break
            m.update(data)
        return m.hexdigest()

print('The MD5 checksum of text.txt is', md5Checksum('000000.png'))
我是否遗漏了一些明显的内容,或者它们是否都应该返回相同的值

JS:
dc839221df178f70c08fa510a3d76a3b

Python和MD5SUM:
9310dad66d4a73e29a761fb724f2825

事实上,如果我有一个名为HELLO.txt的文件,其中唯一的内容是:
HELLO

在Linux/Python中使用base64会得到与JS不同的结果

SEVMTE8K vs SEVMTE8=
我认为这可能与新线路、休息方式、回程车厢等有关

JavaScript将其作为一个连续流,而在文本编辑器中编辑文件会显示换行符


谢谢

唯一的解释是编码不同。找出JS(ISO-8859-1)中的编码与python(UTF-8)中的编码

\u file.target.result.split(',)[1]
,这是干什么用的?Javascript函数返回数据:image/png;base64(或类似项),然后是文件的内容,所有内容都用逗号分隔