运行环境:
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 base64
s = 'ms08067'
bs = base64.b64encode(s.encode('utf-8'))
print(bs)
结果如下:
b'bXMwODA2Nw=='2.2 Base64解码方式
示例代码如下:
import base64 bs = 'bXMwODA2Nw==' bbs = str(base64.b64decode(bs), 'utf-8') print(bbs)
结果如下:
ms080673. Python实现DES加解密 3.1 DES加密
示例代码如下:
from Cryptodome.Cipher import DES import binascii key = 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_hex print(text) print(encryptResult)
结果如下:
ms08067.com===== b'b81fcb047936afb76487dda463334767'3.2 DES解密
示例代码如下:
from Cryptodome.Cipher import DES import binascii key = b'abcdefgh' # key的长度必须为8字节 des = DES.new(key, DES.MODE_ECB) # ECB模式 encryptResult = b'b81fcb047936afb76487dda463334767' encrypto_text = binascii.a2b_hex(encryptResult) #a2b_hex decryptResult = des.decrypt(encrypto_text) print(decryptResult)
结果如下:
b'ms08067.com====='4. Python实现AES加解密 4.1 AES加密
示例代码如下:
from Cryptodome.Cipher import AES import binascii key = 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_hex print(text) print(encryptResult)
结果如下:
baidu.com======= b'7838f1b0f8d26e5c563778670fd0d6e0'4.2 AES解密
示例代码如下:
from Cryptodome.Cipher import AES import binascii key = b'abcdefghabcdefgh' # key 的长度必须为8字节 encryptResult = b'7838f1b0f8d26e5c563778670fd0d6e0' aes = AES.new(key, AES.MODE_ECB) # ECB模式 encrypto_text = binascii.a2b_hex(encryptResult) # a2b_hex decryptResult = aes.decrypt(encrypto_text) print(decryptResult)
结果如下:
b'baidu.com======='5. Python实现MD5加密
示例代码如下:
from hashlib import md5
def 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
通过在线工具验证,如下图:



