> 文档中心 > Python实现数据加密-解密

Python实现数据加密-解密


Python实现数据加密-解密


运行环境:

OS:macOS Monterey Version 12.3.1(英文版)

Python实现数据加密-解密

IDE:PyCharm 2020.1

1 . PyCryptodome库安装

​ PyCryptodome是Python中一种强大的加密算法库,可以实现常见的单向加密、对称加密、非对称加密和流加密算法。目前该库函数支持Python 2和Python 3两种不同版本。安装方式也极其简单,以pip方式进行安装。安装过程如下:

Linux环境:

(venv) (base) liuxiaowei@MacBookAir 漏洞检测与防御 % sudo pip3 install -i https://pypi.douban.com/simple pycryptodome

结果如下图:

Python实现数据加密-解密

Windows环境:

C:\cmderλ pip3 install -i https://pypi.douban.com/simple pycryptodomex

结果如下图:

Python实现数据加密-解密

2. Python实现Base64编/解码

严格意义上讲,Base64编码算法并不算是加密算法,Base64编码只是将数据转码,而且转码的规则是公开的。

2.1 Base64编码方式

示例代码如下:

import base64s = 'ms08067'bs = base64.b64encode(s.encode('utf-8'))print(bs)

结果如下:

b'bXMwODA2Nw=='

2.2 Base64解码方式

示例代码如下:

import base64bs = 'bXMwODA2Nw=='bbs = str(base64.b64decode(bs), 'utf-8')print(bbs)

结果如下:

ms08067

3. Python实现DES加解密

3.1 DES加密

示例代码如下:

from Cryptodome.Cipher import DESimport binasciikey = b'abcdefgh'  # key的长度约为8字节des = DES.new(key, DES.MODE_ECB) # ECB模式text = 'ms08067.com'text = text + (8 - (len(text) % 8)) * '='encrypt_text = des.encrypt(text.encode())encryptResult = binascii.b2a_hex(encrypt_text)  # b2a_hexprint(text)print(encryptResult)

结果如下:

ms08067.com=====b'b81fcb047936afb76487dda463334767'

3.2 DES解密

示例代码如下:

from Cryptodome.Cipher import DESimport binasciikey = b'abcdefgh'  # key的长度必须为8字节des = DES.new(key, DES.MODE_ECB)   # ECB模式encryptResult = b'b81fcb047936afb76487dda463334767'encrypto_text = binascii.a2b_hex(encryptResult)   #a2b_hexdecryptResult = des.decrypt(encrypto_text)print(decryptResult)

结果如下:

b'ms08067.com====='

4. Python实现AES加解密

4.1 AES加密

示例代码如下:

from Cryptodome.Cipher import AESimport binasciikey = b'abcdefghabcdefgh'  # key 的长度必须为8字节text = 'baidu.com'   # 被加密的数据需要为8字节的倍数text = text +(16- len(text) % 16) * '='aes = AES.new(key, AES.MODE_ECB)      # ECB模式encrypto_text =aes.encrypt(text.encode())encryptResult = binascii.b2a_hex(encrypto_text)  # b2a_hexprint(text)print(encryptResult)

结果如下:

baidu.com=======b'7838f1b0f8d26e5c563778670fd0d6e0'

4.2 AES解密

示例代码如下:

from Cryptodome.Cipher import AESimport binasciikey = b'abcdefghabcdefgh'  # key 的长度必须为8字节encryptResult = b'7838f1b0f8d26e5c563778670fd0d6e0'aes = AES.new(key, AES.MODE_ECB)    # ECB模式encrypto_text = binascii.a2b_hex(encryptResult)  # a2b_hexdecryptResult = aes.decrypt(encrypto_text)print(decryptResult)

结果如下:

b'baidu.com======='

5. Python实现MD5加密

示例代码如下:

from hashlib import md5def encrypt_md5(s):    new_md5 = md5()   # 创建md5对象    new_md5.update(s.encode(encoding='utf-8'))    # 返回信息摘要    return  new_md5.hexdigest()if __name__ == '__main__':    print(encrypt_md5('ms08067.com'))

结果如下:

0961f18e7a720a53797aa038c9c643d1

通过在线工具验证,如下图:

Python实现数据加密-解密

Python实现数据加密-解密 创作打卡挑战赛 Python实现数据加密-解密 赢取流量/现金/CSDN周边激励大奖