扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
题中所示代码中,python实现了计算空字符串的MD5值,并对MD5的值的十六进制的字符串所表示的字节进行BASE64处理。
隆化网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。成都创新互联2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
不像Python内部有实现md5功能,根据ANSI C标准,C语言的标准库里是没有md5功能的;
但是RFC1231规定了MD5功能的C实现并提供了附件,可以直接用,也可以直接获取现成的实现,在编译链接时指定正确的.h头文件和.lib静态链接库文件;
这里我采取前者的做法(电脑上没有装VC,有VC就简单很多,使用的是minGW)大概六七百行代码左右。
然后这里展示不完,给个实现效果图
这是我整理的实现代码,其中BASE64部分使用了github上littlestar的b64.c,然后MD5计算部分直接参考了RFC1231标准的附录。RFC1231文件有计算方法
BASE64的编码原理
python的md5模块使用非常简单,包括以下几个函数:
md5.new([arg])
返回一个md5对象,如果给出参数,则相当于调用了update(arg)
md5.updte(arg)
用string参数arg更新md5对象
md5.digest()
返回16字节的摘要,由传给update的string生成,摘要没有ascii字符
md5.hexdigest()
以16进制的形式返回摘要
代码示例:
01.#!/usr/bin/python
02.import
sys
03.import
md5
04.
05.str=sys.argv[1]
06.key =
md5.new()
07.key.update(str)
08.print
key.hexdigest()
09.str=sys.argv[1]
保存代码为md.py
1.[fengyj@fengyj
python]$ chmod +x md.py
2.[fengyj@fengyj
python]$ ./md.py fengyajie
3.74d040444b8f20d37aa9b2bd2997cd64
在许多接口,尤其涉及到金额的地方,都需要用加密算法对数据进行加密。像密码、金额之类的,如果不做加密,被篡改数据,公司的损失会很大。
这里主要说MD5加密(即摘要算法),也就是采用哈希算法,将不定长度的内容转化为32位16进制固定长度的内容。前后台都使用这套算法,再将两者的加密数据比对,如果一致说明数据加密正确,否则数据可能出现篡改。
在pyhon里,可以导入hashlib进行加密,如下
方法一:
执行结果如下图:
方法二:
执行结果如下图:
md5的获取,这是我早期写的一个方法,你看看
def getMd5OfFile(fname):
if not os.path.exists(fname):
return None
try:
f = file(fname, 'rb')
m = md5.new()
while True:
d = f.read(16384)
if not d:
break
m.update(d)
f.close()
return m.hexdigest()
except Exception,e:
getLogger().error(e)
return None
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import hashlib
string = '123456SkinRun51'
md5=hashlib.md5()
md5.update(string.encode('utf-8'))
res=md5.hexdigest()
print('md5加密后结果:',res)
-------------------------------------------
echo md5(utf8_encode('123456SkinRun51')).PHP_EOL;
exit();
叙述:python3.6.6 ;php7
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流