博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两种加密方式在Python中的使用
阅读量:6239 次
发布时间:2019-06-22

本文共 1422 字,大约阅读时间需要 4 分钟。

有时我们需要对一些重要的数据进行加密,如应用签名,qq授权的openid等。

安全加密

下面介绍一下,它可以对一下敏感数据进行加密,可通过pip直接安装。下面是使用在django中的常用加密方式。

from itsdangerous.jws import TimedJSONWebSignatureSerializer as Serializerfrom django.conf import settingsdef dumps(dict, expires):    '''    将字典加密,返回加密字符串    :param dict:字典    :param expires:过期时间    :return:字符串    '''    serializer = Serializer(settings.SECRET_KEY, expires_in=expires)    json_str = serializer.dumps(dict).decode()    return json_str复制代码

上面利用应用中密钥进行加密,这个数据一般不会暴露出去,而且我们还设置了过期时期,所有理论上就破解不了。我们自己如果想解密,采取下面的方式。这可以应用在一些敏感数据的验证。

def loads(json_str, expires):    '''    将加密字符串解密    :param json_str: 加密字符串    :return: 字典    '''    serializer = Serializer(settings.SECRET_KEY, expires_in=expires)    try:        dict = serializer.loads(json_str)    except:        # 如果字符串被修改过,或超期,会抛异常        return None    else:        return dict复制代码

对称加密

base64是一种对称加密方式,是可逆的。用于对一些不太重要的数据加密。

import pickleimport base64def dumps(dict):    '''将字典转换成bytes'''    json_bytes = pickle.dumps(dict)    # 加密    json_secret = base64.b64encode(json_bytes)    # 转字符串    json_str = json_secret.decode()    return json_strdef loads(json_str):    '''字符串转bytes'''    json_secret = json_str.encode()    # 解密    json_bytes = base64.b64decode(json_secret)    # 转字典    json_dict = pickle.loads(json_bytes)    return json_dict复制代码

base64的加密和解密传入的参数是bytes,如果要对字典dict加密,可利用pickle模块先转换为bytes类型再进行操作。

转载于:https://juejin.im/post/5d03c50f51882562fb138827

你可能感兴趣的文章