Python中的加密算法

2025年1月5日 | 阅读 4 分钟

什么是加密?

加密是将数据转换为密码文本或加密文本的过程。简单来说,加密就是编码数据的过程。加密过程需要加密密钥才能完成。

什么是解密?

解密是将加密文本或密码文本转换为明文的过程。它也称为数据解码。解密使用与加密相同的密钥。

加密和解密过程称为密码学。密码学是一种方法,可以使两个用户之间的安全通信使用编码的消息。密码学为用户之间发送的机密消息提供了一个安全私密的平台。

密码学及其关键术语

密码学是一种隐藏消息的过程,它提供隐私和安全。密码学中使用了一些术语,包括:

  • 明文:明文是用户可以读取的原始文本。明文用于加密,并转换为密文。
  • 密文:密文是加密后提供的加密文本。
  • 加密:将明文转换为密文称为加密。
  • 解密:这是一个将密文转换为明文的过程。
Encryption Algorithms in Python

加密和解密过程需要密钥。加密和解密过程有两种方法:对称密钥和非对称密钥。

让我们通过这些密钥来理解加密和解密的过程。

对称密钥

对称密钥是一种加密密钥,它使用相同的密钥进行编码和解码。加密过程主要使用对称密钥对明文进行编码。这种类型的加密不是加密明文的安全方法,因为它使用相同的密钥进行解密,而该密钥也用于加密。使用相同的密钥进行解密可以轻松地解密加密文本,因此它不是一种安全的加密方法。

使用对称密钥实现加密

Python 提供了加密库来实现加密和解密过程。

可以使用 Python 中的 pip 命令安装此库

加密库提供了Fernet 模块,通过该模块我们可以完成加密和解密。让我们使用对称密钥来实现加密过程。

代码

输出

Plain Text :  Encryption and Decryption
Encrypted Text :  b'gAAAAABlL5v9jYxguZqOifo0hyW51auQbd6H68Up63s6XGt8dfwBBnTCRF-fKjrdnNArlMhdwfGRmYYIAFmi3yfwShPYc6CwwWAUSP9wPoMz4p4STkmBtYk='
Decrypted Text : Encryption and Decryption

在此,我们导入了 cryptography 包的 Fernet 模块。然后,我们生成了加密和解密的密钥,并将字符串转换为字节字符串(对文本进行编码)。我们将使用加密密钥创建 Fernet 类的实例。然后,使用 Fernet 实例加密字符串。然后,可以使用用于加密的相同密钥解密字符串

非对称密钥

使用非对称密钥的加密使用两个密钥:公钥和私钥。公钥用于加密。解密使用私钥完成。使用非对称密钥进行加密是一种更安全的方法,因为解密密钥是私有的,并非所有人都能轻易访问。加密密钥是公开的,任何想要发送数据的人都可以访问。连接是安全的,并且是一对一加密的。

使用非对称密钥实现加密

Python 提供了rsa 库,用于实现文本的加密和解密。

可以使用 Python 中的 pip 命令安装此库。

代码

输出

Plain Text :  Encryption and Decryption
Encrypted Text :  b'4\tv\x86\xa81\xeb1\x84\xbd\xae\xe8K\x84\xc0\xe8p\xdb\xe1\x92\xfcC&\x11;g\x16-\xc7\xc2I\xa0\xf9^\xbcy^\xf7\xfc\x1b\\\nZ]p\x98\xb5\xc1\xc36\xe4\xf1kM\\\xc3\xa8\xc2B\xf1F6\x10\xc2'
Decrypted Text : Encryption and Decryption

我们导入了 rsa 库,然后使用 rsa.newkeys() 函数生成了公钥和私钥。将文本编码为字节字符串,并使用公钥加密该字符串。然后,可以使用私钥解密文本,将解密后的文本转换为人类可读且有意义的消息。

反转密码算法

加密过程也可以使用反转密码算法进行。此算法反转文本,并以反转的顺序给出密文。文本的解码也通过反转加密文本以获得人类可读的明文来完成。由于文本只是反转的,因此可以轻松解码,因此该算法不是一种安全的加密方法。

让我们在 Python 中实现反转密码算法

代码

输出

Plain Text : Encryption and Decryption
Encrypted Text : noitpyrceD dna noitpyrcnE
Decrypted Text : Encryption and Decryption

我们获取了明文,然后通过反转它来加密。密文的解密是通过反转加密文本来完成的。