python加密和解密_如何在Python中加密和解密数据

python加密和解密

您是视觉学习者吗? 在YouTube上查看本教程。 点击这里

加密是对信息进行编码的过程,只有授权方才能访问它。 这一点至关重要,因为它可以安全地保护您不希望任何人看到或访问的数据。

在本教程中,您将学习如何使用Python使用加密库对文件或任何字节对象(也包括字符串对象)进行加密

我们将使用对称加密,这意味着与加密数据相同的密钥也可用于解密。 那里有很多加密算法,我们要使用的库是建立在AES算法之上的。

注意:了解加密和 哈希算法 之间的区别很重要 ,在加密中,一旦拥有密钥,便可以检索原始数据,而在 哈希函数中 则不能,因此,它们被称为单向加密。

让我们从安装加密开始:

pip3 install cryptography

打开一个新的Python文件,让我们开始吧:

from cryptography.fernet import Fernet

生成密钥

Fernet是对称身份验证密码技术的实现,让我们首先生成该密钥并将其写入文件:

def write_key () :
    """
    Generates a key and save it into a file
    """
    key = Fernet.generate_key()
    with open( "key.key" , "wb" ) as key_file:
        key_file.write(key)

generate_key()函数会生成一个新的Fernet密钥,您确实需要将其保存在安全的地方,如果丢失了该密钥,则将无法再解密使用此密钥加密的数据。

由于此密钥是唯一的,因此我们不会在每次加密任何内容时生成密钥,因此我们需要一个函数来为我们加载该密钥:

def load_key () :
    """
    Loads the key from the current directory named `key.key`
    """
    return open( "key.key" , "rb" ).read()

字符串加密

现在我们知道了如何获取密钥,让我们从加密字符串对象开始,只是为了让您首先熟悉它。

生成密钥并将其写入文件:

# generate and write a new key
write_key()

让我们加载该密钥:

# load the previously generated key
key = load_key()

一些消息:

message ="some secret message" .encode()

我们需要对字符串进行编码,以将其转换为适合加密的字节,encode()方法使用utf-8编解码器对该字符串进行编码。 使用该键初始化Fernet类:

# initialize the Fernet class
f = Fernet(key)

加密消息:

# encrypt the message
encrypted = f.encrypt(message)

f.encrypt()方法对传递的数据进行加密,这种加密的结果称为“ Fernet令牌”,并具有强大的隐私性和真实性保证。

让我们看看它的外观:

# print how it looks
print(encrypted)

输出:

b'gAAAAABdjSdoqn4kx6XMw_fMx5YT2eaeBBCEue3N2FWHhlXjD6JXJyeELfPrKf0cqGaYkcY6Q0bS22ppTBsNTNw2fU5HVg-c-0o-KVqcYxqWAIG-LVVI_1U='

解密:

decrypted_encrypted = f.decrypt(encrypted)
print(decrypted_encrypted)
b'some secret message'

的确是同一条信息。

f.decrypt()方法解密Fernet令牌。 成功解密后,这将返回原始明文作为结果,否则将引发异常。

有关更多详细信息和说明,请查阅密码学的官方文档

另外,如果您对密码学感兴趣,我个人建议您阅读“ 严重密码学”书,因为它非常适合您并且数学上不太详细。

翻译自: https://hackernoon.com/how-to-encrypt-and-decrypt-data-in-python-53193yhj

python加密和解密

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值