如何在 Python 中加密和解密字符串?

2025年3月7日 | 阅读 7 分钟

加密和解密简介

加密及其对等项解密在网络安全中起着重要作用,因为它们是保护敏感数据免遭未经授权访问的方法。这些方法对于防止通信、个人信息、金融交易甚至政府数据遭到泄露至关重要。

相反,加密是将明文(规范化信息)转换为密文(不可读数据)。只有拥有解密密钥或正确加密技术的人才能将此密文解密回其原始形式。即使数据被拦截或泄露,此过程也能保持您的数据机密性、完整性和安全性。

了解加密的重要性

出于许多原因,加密已成为数据安全领域的核心。

  • 数据机密性:只有拥有正确加密密钥的授权用户才能检索原始数据。
  • 信息完整性:通过确保信息在传输过程中未被篡改来保护信息。
  • 身份验证:加密涉及验证数据是否来自发布的发件人。
  • 合规性:金融和医疗保健等许多行业都有关于数据保护的法规,要求它们使用加密来保护法律(如 GDPR、HIPAA、PCI-DSS)要求的个人或敏感数据。

了解对称加密与非对称加密的区别

广义上讲,加密分为两类

  1. 对称加密
  2. 非对称加密

这两种类型在速度、安全性和密钥管理方面在不同情况下都更有效。选择加密方法时,重要的是要知道它们各自具有自己的特性和适用场景。

对称加密

对称加密使用单个密钥进行加密和解密。如果您想解密此数据,则必须在发送方和接收方之间共享相同的密钥。这就是为什么密钥管理变得非常重要,如果密钥被拦截或泄露,那么数据库中保存的所有数据都不再安全。

对称加密的工作原理?

  • 在发送方和接收方之间共享一个密钥
  • 在将明文加密为密文的过程中,此密钥由发送方使用。
  • 然后,接收方使用相同的密钥将密文解密为明文。

对称加密的一些示例算法

  1. AES(高级加密标准):一种流行的加密标准,其特点是性能和安全性兼备。AES 具有 128、192 和 256 位密钥。
  2. DES(数据加密标准):较旧,现在安全性较低,但因其是 AES 标准的早期灵感来源而闻名。
  3. Blowfish 和 Twofish:更灵活的对称算法,Blowfish 比 AES 快但安全性较低。

非对称加密

非对称加密,也称为公钥密码学,使用两个密钥——一个用于加密(公钥),另一个用于解密(私钥)。这些密钥在数学上是绑定的,但从一个推导出另一个在计算上是不可行的。这有助于解决对称加密中的许多问题,因为公钥可以自由共享,而私钥则保持机密。

非对称加密的工作原理?

  • 发送方输入一个随机生成的(公钥,私钥)对 pub,S 供接收方使用。
  • 任何想向接收方发送加密消息的人都会获得其公钥的副本。
  • 您使用公钥加密消息并将其发送出去。
  • 消息只能由接收方解密,接收方拥有解密所需的私钥。

非对称加密的一些示例算法

  1. RSA(Rivest-Shamir-Adleman):最流行的非对称加密算法。密钥长度:RSA 使用 1024、2048 或 4096 字节的密钥长度,使其安全并成为当今最适合的密码算法之一。
  2. ECC(椭圆曲线密码学):与 RSA 类似,但密钥长度更短,因此更节省资源。
  3. DSA(数字签名算法):DSA 主要用于数字签名,而不是广泛的加密。

Python 中一些流行的密码库

Python 中有许多有用的可用于各种强大的加密功能,并且非常容易解密。所有这些库都包含各种抽象级别的不同算法,开发人员可以实现任何加密技术。本文将介绍三个最受欢迎的库:cryptography、pycryptodome 和 hashlib。

Python 中的 cryptography 库

Cryptography 是最常见的 Python 安全密码库。它具有常用加密算法的高级配方和低级接口。它旨在更易于使用和更安全,它易于使用且可靠安全 - 功能需要人工输入。

Cryptography 库的一些功能

以下是 Python 中 cryptography 库的一些关键功能:

  1. 对称加密(例如,AES、Fernet)
  2. 非对称加密(例如,RSA、ECC)
  3. 哈希算法(例如,SHA-256、SHA-3)
  4. 数字签名
  5. 密钥生成和管理

安装

要安装 cryptography,请使用以下 pip 命令:

使用 Fernet 进行高级加密

在技术上,Fernet 是一种加密方法,它通过 AES(CBC 模式,128 位密钥长度)确保数据得到强大保护,同时还提供用户友好的功能和安全措施,例如消息身份验证。

示例

输出

 
Encrypted: b'gAAAAABg0WUyG9..."
Decrypted: Hello, this is a secret message!   

Python 中的 pycryptodome 库

pycryptodome 库在密码学领域享有盛誉。它提供了一系列加密算法,例如AESPython 中的 RSA,方便使用。

pycryptodome 库的一些功能

以下是 Python 中 pycryptodome 库的一些关键功能:

  1. 对称加密(AES、DES 等)
  2. 非对称加密(RSA、ECC)
  3. 哈希算法(SHA、MD5 等)
  4. 数字签名和密钥交换
  5. 消息认证码(HMAC)

安装

要安装 pycryptodome,请使用以下 pip 命令:

使用 AES 进行对称加密

这是使用 pycryptodome 进行 AES 加密的一个示例。

示例

输出

 
IV: KGQ0IO6vMF1H+ZZzV4pxvA==
Ciphertext: zrqsLcl8gzE5JRU5...   

使用 RSA 进行非对称加密

这是使用 pycryptodome 进行 RSA 加密的一个示例。

示例

输出

 
Encrypted Message: Itl4dkQ...   

加密和解密字符串的一些应用

以下是加密和解密字符串的一些用例或应用:

  1. 安全 Web 通信(HTTPS)
    • 加密在 HTTPS 中发挥着作用,通过保护在 Web 浏览器和服务器之间共享的登录详细信息和财务数据。
    • HTTPS 依赖于 TLS/SSL 协议,这些协议结合了 RSA 或 ECDSA 等非对称加密方法进行密钥交换,以及 AES 等对称加密进行安全数据传输。
    • 当您访问网站时,非对称加密会建立一个会话密钥,而对称加密则保护来回发送的数据。
  2. 云存储中的数据加密
    • 存储在云服务第三方服务器上的数据通过加密方法进行保护,以有效高效地保护其敏感级别。
    • AWS 和 Google Cloud 等主要云服务提供商提供加密功能,这些功能在数据传输过程中和静止时都有效。
    • 它静止时。AES 等对称加密技术经常用于保护数据,而 RSA 等非对称加密方法用于管理加密密钥。
    • 这种强大的加密方法确保在发生对存储系统的访问时,没有所需的解密密钥,数据将保持不可读。
  3. 端到端加密消息(WhatsApp、Signal)
    • WhatsApp 和 Signal 等应用程序采用端到端加密(称为 EEE),确保只有发送方和接收方能够解码消息,而没有任何中间人(包括应用程序提供商)能够访问。
    • 为了确保建立安全的密钥交换,利用非对称加密(RSA 或 ECC),然后是对称加密(AES),后者加密实际的消息数据,以保证文本和多媒体通信的隐私。
  4. 银行和金融交易
    • 加密是通过在线银行、信用卡支付和股票交易使在线交易更安全的途径。
    • AES 等对称加密由支付处理商和银行用于保护交易数据,而 RSA 等非对称加密用于进行密钥交换和数字签名。
    • PCI-DSS 标准要求对所有敏感持卡人数据进行加密,因此,它免受泄露和未经授权的访问。