你好,可以通过python程序实现文件转MD5码吗?如果可以能发一下程序吗

Python030

你好,可以通过python程序实现文件转MD5码吗?如果可以能发一下程序吗,第1张

使用python获取指定文件的md5码,代码和运行效果如下;

代码如图

获取wjmd5.py自己的md5为例

#--coding:utf-8

import hashlib as hashimport os.path

try: get_ipython()

except:from sys import argvs1=(os.path.dirname(argv[0]))cwd=(s1 if s1!="" else os.getcwd())os.chdir(cwd)

md5= hash.md5()

res=Nonefna=input('请输入文件名')

with open(fna, "rb") as i: md5.update(i.read())res= md5.hexdigest()

print(res)

题中所示代码中,python实现了计算空字符串的MD5值,并对MD5的值的十六进制的字符串所表示的字节进行BASE64处理。

不像Python内部有实现md5功能,根据ANSI C标准,C语言的标准库里是没有md5功能的;

但是RFC1231规定了MD5功能的C实现并提供了附件,可以直接用,也可以直接获取现成的实现,在编译链接时指定正确的.h头文件和.lib静态链接库文件;

这里我采取前者的做法(电脑上没有装VC,有VC就简单很多,使用的是minGW)大概六七百行代码左右。

然后这里展示不完,给个实现效果图

这是我整理的实现代码,其中BASE64部分使用了github上littlestar的b64.c,然后MD5计算部分直接参考了RFC1231标准的附录。RFC1231文件有计算方法

BASE64的编码原理

在许多接口,尤其涉及到金额的地方,都需要用加密算法对数据进行加密。像密码、金额之类的,如果不做加密,被篡改数据,公司的损失会很大。

这里主要说MD5加密(即摘要算法),也就是采用哈希算法,将不定长度的内容转化为32位16进制固定长度的内容。前后台都使用这套算法,再将两者的加密数据比对,如果一致说明数据加密正确,否则数据可能出现篡改。

在pyhon里,可以导入hashlib进行加密,如下

方法一:

执行结果如下图:

方法二:

执行结果如下图: