python 3.6 和 django 1.10 不支持 md5
md5 not support in python 3.6 and django 1.10
我想解密从 CCavenue.In 他们使用 md5 库的参考代码收到的响应,但不支持 python 3.6 的 django 1.10。
import md5
ModuleNotFoundError: 没有名为 'md5'
的模块
在 python3.x 中,你应该使用这个:
from hashlib import md5
You can now feed this object with bytes-like objects (normally
bytes) using the update() method.
例如
from hashlib import md5
m = md5()
m.update(b"Nobody")
print(m.hexdigest())
Module name: md5 .
Rationale: Replaced by the 'hashlib' module.
Date: 15-May-2007 .
Documentation: Documented as deprecated as of Python 2.5, but listing
in this PEP was neglected.DeprecationWarning raised as of Python 2.6.
查看来自 hashlib 的更多详细信息。
感谢McGrady
的回答。
这是我的详细解释:
- Python 2.x
md5
为单模块
- 未合并到
hashlib
update()
支持str
- 不是
bytes
- 特殊:对于
Python 2.7
,md5
已合并到hashlib
但update()
仍然支持str
- 代码:
try:
import md5
except ImportError:
from hashlib import md5
def generateMd5(strToMd5) :
encrptedMd5 = ""
md5Instance = md5.new()
#<md5 HASH object @ 0x1062af738>
md5Instance.update(strToMd5)
encrptedMd5 = md5Instance.hexdigest()
#af0230c7fcc75b34cbb268b9bf64da79
return encrptedMd5
- Python 3.x
md5
已合并为 hashlib
update()
只支持bytes
- 不支持
str
- 代码:
from hashlib import md5 # only for python 3.x
def generateMd5(strToMd5) :
"""
generate md5 string from input string
eg:
xxxxxxxx -> af0230c7fcc75b34cbb268b9bf64da79
:param strToMd5: input string
:return: md5 string of 32 chars
"""
encrptedMd5 = ""
md5Instance = md5()
# print("type(md5Instance)=%s" % type(md5Instance)) # <class '_hashlib.HASH'>
# print("type(strToMd5)=%s" % type(strToMd5)) # <class 'str'>
bytesToMd5 = bytes(strToMd5, "UTF-8")
# print("type(bytesToMd5)=%s" % type(bytesToMd5)) # <class 'bytes'>
md5Instance.update(bytesToMd5)
encrptedMd5 = md5Instance.hexdigest()
# print("type(encrptedMd5)=%s" % type(encrptedMd5)) # <class 'str'>
# print("encrptedMd5=%s" % encrptedMd5) # 3a821616bec2e86e3e232d0c7f392cf5
return encrptedMd5
我想解密从 CCavenue.In 他们使用 md5 库的参考代码收到的响应,但不支持 python 3.6 的 django 1.10。
import md5
ModuleNotFoundError: 没有名为 'md5'
的模块在 python3.x 中,你应该使用这个:
from hashlib import md5
You can now feed this object with bytes-like objects (normally bytes) using the update() method.
例如
from hashlib import md5
m = md5()
m.update(b"Nobody")
print(m.hexdigest())
Module name: md5 .
Rationale: Replaced by the 'hashlib' module.
Date: 15-May-2007 .
Documentation: Documented as deprecated as of Python 2.5, but listing in this PEP was neglected.DeprecationWarning raised as of Python 2.6.
查看来自 hashlib 的更多详细信息。
感谢McGrady
的回答。
这是我的详细解释:
- Python 2.x
md5
为单模块- 未合并到
hashlib
- 未合并到
update()
支持str
- 不是
bytes
- 不是
- 特殊:对于
Python 2.7
,md5
已合并到hashlib
但update()
仍然支持str
- 代码:
try:
import md5
except ImportError:
from hashlib import md5
def generateMd5(strToMd5) :
encrptedMd5 = ""
md5Instance = md5.new()
#<md5 HASH object @ 0x1062af738>
md5Instance.update(strToMd5)
encrptedMd5 = md5Instance.hexdigest()
#af0230c7fcc75b34cbb268b9bf64da79
return encrptedMd5
- Python 3.x
md5
已合并为hashlib
update()
只支持bytes
- 不支持
str
- 不支持
- 代码:
from hashlib import md5 # only for python 3.x
def generateMd5(strToMd5) :
"""
generate md5 string from input string
eg:
xxxxxxxx -> af0230c7fcc75b34cbb268b9bf64da79
:param strToMd5: input string
:return: md5 string of 32 chars
"""
encrptedMd5 = ""
md5Instance = md5()
# print("type(md5Instance)=%s" % type(md5Instance)) # <class '_hashlib.HASH'>
# print("type(strToMd5)=%s" % type(strToMd5)) # <class 'str'>
bytesToMd5 = bytes(strToMd5, "UTF-8")
# print("type(bytesToMd5)=%s" % type(bytesToMd5)) # <class 'bytes'>
md5Instance.update(bytesToMd5)
encrptedMd5 = md5Instance.hexdigest()
# print("type(encrptedMd5)=%s" % type(encrptedMd5)) # <class 'str'>
# print("encrptedMd5=%s" % encrptedMd5) # 3a821616bec2e86e3e232d0c7f392cf5
return encrptedMd5