Python实现对称加密算法

作者:问答酱2024.02.17 11:17浏览量:12

简介:对称加密算法是一种加密和解密使用相同密钥的加密算法。本文将介绍如何使用Python实现对称加密算法,包括AES、DES等常用算法。

千帆应用开发平台“智能体Pro”全新上线 限时免费体验

面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用

立即体验

对称加密算法是一种加密和解密使用相同密钥的加密算法。Python中常用的对称加密算法有AES、DES等。下面我们分别介绍如何使用Python实现这两种算法。

一、AES对称加密算法

AES(Advanced Encryption Standard)是一种常用的对称加密算法,具有较高的安全性。Python中可以使用pycryptodome库来实现AES加密和解密。

首先,需要安装pycryptodome库。可以使用以下命令进行安装:

  1. `pip install pycryptodome`

接下来,我们可以使用下面的代码实现AES加密和解密:

  1. ```python
  2. from Crypto.Cipher import AES
  3. from Crypto.Util.Padding import pad, unpad
  4. from Crypto.Random import get_random_bytes
  5. def aes_encrypt(key, data):
  6. cipher = AES.new(key, AES.MODE_CBC)
  7. encrypted_data = cipher.encrypt(pad(data, AES.block_size))
  8. return encrypted_data
  9. def aes_decrypt(key, encrypted_data):
  10. cipher = AES.new(key, AES.MODE_CBC)
  11. decrypted_data = unpad(cipher.decrypt(encrypted_data), AES.block_size)
  12. return decrypted_data
  13. ```

在上面的代码中,aes_encrypt函数接受一个密钥和一个待加密的数据作为输入,返回加密后的数据。aes_decrypt函数接受一个密钥和一个已加密的数据作为输入,返回解密后的数据。这两个函数都使用了CBC模式进行加密和解密,并使用了随机生成的初始化向量(IV)。加密和解密时需要保证使用的密钥和IV相同。Crypto.Util.Padding模块提供了填充函数,用于将数据填充到AES要求的块大小。

二、DES对称加密算法

DES(Data Encryption Standard)是一种较旧的对称加密算法,安全性相对较低,但在某些情况下仍然可以使用。Python中可以使用pycryptodome库来实现DES加密和解密。

首先,需要安装pycryptodome库。可以使用以下命令进行安装:

  1. `pip install pycryptodome`

接下来,我们可以使用下面的代码实现DES加密和解密:

  1. from Crypto.Cipher import DES3
  2. from Crypto.Util.Padding import pad, unpad
  3. from Crypto.Random import get_random_bytes
  4. def des3_encrypt(key, data):
  5. cipher = DES3.new(key, DES3.MODE_CBC)
  6. encrypted_data = cipher.encrypt(pad(data, DES3.block_size))
  7. return encrypted_data
  8. def des3_decrypt(key, encrypted_data):
  9. cipher = DES3.new(key, DES3.MODE_CBC)
  10. decrypted_data = unpad(cipher.decrypt(encrypted_data), DES3.block_size)
  11. return decrypted_data
article bottom image

相关文章推荐

发表评论