使用Python pyDes和base64模块对字符串进行加密和解密

代码如下:

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")
 

此外:我们可以在存储的时候在字符串的前面,后面加入一些随机长度的字符串,这样防止别人破解,但在解密的时候需要将这些加上去的字符串先去除

posted @ 2020-05-09 16:51  傻白甜++  阅读(956)  评论(0编辑  收藏  举报
TOP