summaryrefslogtreecommitdiff
path: root/04-CustomLibrary/Custometest/MD5.py
blob: 697ae83834acf1be495454a47230e005045eff09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 由于MD5模块在python3中被移除
# 在python3中使用hashlib模块进行md5操作

import hashlib

class MD5:
    def MD5(data,langer,md5_types):
        # 创建md5对象
        # m = hashlib.md5()
        # Tips
        # 此处必须encode
        # 若写法为m.update(str)  报错为: Unicode-objects must be encoded before hashing
        # 因为python3里默认的str是unicode
        # 或者 b = bytes(str, encoding='utf-8'),作用相同,都是encode为bytes
        # b = str.encode(encoding='utf-8')
        # m.update(b)
        # str_md5 = m.hexdigest()
        if langer == "英文":
            # str_md5 = hashlib.md5(b'this is a md5 test.').hexdigest()
            str_md5 = hashlib.md5("b'"+data+"'").hexdigest()
            print('MD5加密前为 :' + data)
            print('MD5加密后为 :' + str_md5)
            return str_md5
        elif langer == "中文":
            str_md5 = hashlib.md5('你好'.encode(encoding=md5_types)).hexdigest()
            return str_md5
            # utf8 和gbk 加密结构不一样
            # hashlib.md5('你好'.encode(encoding='GBK')).hexdigest()
            # hashlib.md5('你好'.encode(encoding='GB2312')).hexdigest()
            # hashlib.md5('你好'.encode(encoding='GB18030')).hexdigest()
if __name__ == '__main__':
    data = '小猪'
    langer = '中文'
    md5_types = 'GBK'
    a =MD5(data,langer,md5_types)
    print(a)
    b=r'C:\Users\小猪\AppData\Local\Programs\Python\Python37\Lib\site-packages\custometest\MD5.py'
    with open(b, encoding='utf-8') as f:
        text = f.read()
        print(text)