MD5使用
在html文件中引入:
<script src=”https://cdn.bootcss.com/blueimp-md5/1.1.0/js/md5.js”></script>
python中使用:
from hashlib import md5 # python中的md5只能加密二进制数据 m = md5() m.update('你好'.encode()) #加密,没有返回值 print(m.hexdigest()) #提取密文
对称加密之DES,AES
# pip install pycryptodomex -i https://pypi.tuna.tsinghua.edu.cn/simple
from Cryptodome.Cipher import DES, AES
import binascii # 进制转换模块
key = 'qwertyui'.encode() # 密钥也需要是一个字节数据,也就是encode之后的数据,密钥必须是八个字符
data = '你好世界你好世界' # 根据不同的工作模式来定,有些对明文数量有限制,有些没有
# 加密函数
def encryption(key, data):
"""
:param key: 密钥
:param data: 明文
:return: 密文
"""
cipher = DES.new(key=key, mode=DES.MODE_CBC, iv=b'12345678') # 创建一个加密规则
data = data.encode()
return binascii.b2a_hex(cipher.encrypt(data))
encryptedData = encryption(key, data)
print(encryptedData)
# 解密函数
def decryption(key, data, iv):
"""
:param key: 密钥
:param data: 密文
:param iv: 偏移量
:return: 明文
"""
cipher = DES.new(key=key, mode=DES.MODE_CBC, iv=iv)
data = binascii.a2b_hex(data)
return cipher.decrypt(data)
decryptedData = decryption(key, encryptedData, b'12345678').decode()
print(decryptedData)
非对称加密之RSA
# pip install rsa -i https://pypi.tuna.tsinghua.edu.cn/simple
import rsa
import binascii
# 生成一对公私钥
pubkey,privkey = rsa.newkeys(512)# 这个数字代表能被加密的数据的位数,最少是128
# 只能加密二进制数据,两个参数,第一个是二进制的明文,第二个是公钥
crypto = rsa.encrypt(message='你好世界'.encode(),pub_key=pubkey)
crypto = binascii.b2a_hex(crypto)
print(crypto)
crypto = binascii.a2b_hex(crypto)
message = rsa.decrypt(crypto=crypto,priv_key=privkey)
print(message.decode())