小编the*_*try的帖子

Python和PHP之间的MD5哈希差异?

我正在尝试创建二进制文件(flv/f4v等)的校验和,以验证服务器和客户端计算机之间的文件内容.在客户端计算机上运行的应用程序是基于python的,而服务器是使用PHP.

PHP代码如下:

$fh = fopen($filepath, 'rb');
$contents = fread($fh, filesize($filepath));
$checksum = md5(base64_encode($contents));
fclose($fh);
Run Code Online (Sandbox Code Playgroud)

Python代码如下:

def _get_md5(filepath):
    fh = open(filepath, 'rb')
    md5 = hashlib.md5()
    md5.update(f.read().encode('base64'))
    checksum = md5.hexdigest()
    f.close()
    return checksum
Run Code Online (Sandbox Code Playgroud)

在我正在测试的特定文件上,PHP和Python md5哈希字符串分别如下:

cfad0d835eb88e5342e843402cc42764
0a96e9cc3bb0354d783dfcb729248ce0
Run Code Online (Sandbox Code Playgroud)

服务器运行CentOS,而客户端是MacOSX环境.我非常感谢任何帮助,理解为什么这两个产生不同的哈希结果,或者我忽略了什么(我对Python相对较新......).谢谢!

[post-mortem:问题最终是Python和PHP的base64编码变体之间的区别.MD5在两个脚本平台之间的工作方式相同(至少在Python中使用.hexdigest()).

php python md5

23
推荐指数
2
解决办法
3210
查看次数

标签 统计

md5 ×1

php ×1

python ×1