[英]MD5 Bruteforce, Issue translating from Python to Javascript
[英]JavaScript MD5 differs from Python/Bash 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' ||
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=
它使用https://raw.githubusercontent.com/blueimp/JavaScript-MD5/master/js/md5.min.js
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) 中的编码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.