本站使用了 Pjax 等基于 JavaScript 的开发技术,但您的浏览器已禁用 JavaScript,请开启 JavaScript 以保证网站正常显示!

Python2的md5模块转为Python3中的hashlib模块注意事项

python.jpg

一个从网上复制的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')


 继续浏览关于 的文章

 本文最后更新于:2018/08/28 15:41:04,可能因经年累月而与现状有所差异

 引用转载请注明:梦想失落乐园 > 技术控 > Python2的md5模块转为Python3中的hashlib模块注意事项