代码如下:
import pyDes
import base64
Key = "Gogenius"
Iv = "Gogen123"
# 加密
def encrypt_str(data):
# 加密方法
method = pyDes.des(Key, pyDes.CBC, Iv, pad=None, padmode=pyDes.PAD_PKCS5)
# 执行加密码
k = method.encrypt(data)
# 转base64编码并返回
return base64.b64encode(k)
# 解密
def decrypt_str(data):
method = pyDes.des(Key, pyDes.CBC, Iv, pad=None, padmode=pyDes.PAD_PKCS5)
# 对base64编码解码
k = base64.b64decode(data)
# 再执行Des解密并返回
return method.decrypt(k)
Encrypt = encrypt_str("1234567")
print(Encrypt)
Decrypt = decrypt_str(Encrypt)
print(Decrypt)
扩展:
默认情况下本加密函数执行完成后返回的为base64编码,如果直接存放到数据库再取出来有可能就是str型,这时候不可以直接拿str型的数据去解密,所以通常做法是先将数据转换为字符串型后再存放到数据库,解密的时候从数据库取出来再转换成base64编码再进行解密,方法如下
# 转换为UTF-8编码,用这种编码存储就不会有问题
data.decode("UTF-8")
# 解码
data.encode("UTF-8")
此外:我们可以在存储的时候在字符串的前面,后面加入一些随机长度的字符串,这样防止别人破解,但在解密的时候需要将这些加上去的字符串先去除
转载于:https://blog.51cto.com/270142877/2128344