Python实现数据加密-解密
Python实现数据加密-解密
运行环境:
OS:macOS Monterey Version 12.3.1(英文版)
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
结果如下图:
Windows环境:
C:\cmderλ pip3 install -i https://pypi.douban.com/simple pycryptodomex
结果如下图:
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
通过在线工具验证,如下图:
创作打卡挑战赛
赢取流量/现金/CSDN周边激励大奖