
一个从网上复制的Python2脚本调用了md5模块
我是win7安装的Python3,因为Python3移除了内置的md5模块,而改用hashlib模块,因此这段代码需要做修改才能正常运行
#!/usr/bin/python
import md5 #修改为 import hashlib
import string
s=''
s1=''
def KMD5(arg):
m1=md5.new() #修改为 m1=hashlib.md5()
m1.update(arg) #修改为 m1.update(arg.encode(encoding='utf-8')),一定要加.encode(encoding='utf-8'),要不然会报错
s=m1.hexdigest()
return s
def k1():
arg0='4700D-936AF-CEB02-9A5B8' #机器码
arg1=(arg0.replace('-',''))
print (arg1)
arg2='&'
arg3='1234567890123456789012345' #注册码
arg4='winxp'
arg5=arg1+arg2+arg3+arg2+arg4
print(arg5)
s1=KMD5(arg5)
print(s1)
sa=s1[0:20]
so=sa.upper()
print(so)
sd=KMD5(so)
sp=sd.upper()
#print(sa)
sp=sp[:5]+'-'+sp[5:10]+'-'+sp[10:15]+'-'+sp[15:20]
#print(sp)
return sp
md5.new()的初始化md5变量的方法改为用hashlib.md5()来初始化
向md5对象传入字符串的方法m1.update(arg)改为arg参数要用.encode(encoding='utf-8')转为utf-8编码,否则会报错
还有要注意的是如果需要多次调用m1.update(arg.encode(encoding='utf-8'))方法,需要每次调用前都重新初始化一遍m1对象,否则你传入的字符串对象就是你前次字符串到现在字符串的连接字符串(arg+arg+...+arg).encode(encoding='utf-8')
感谢大家对我文章的支持,我会再接再厉奉献更多精品文章