Python中常见的加密解密算法总结

Python中常见的加密解密算法总结

在Python中,有许多常见的加密解密算法,包括对称加密算法、非对称加密算法、哈希算法等。本文将对这些算法进行总结,并提供两个示例说明。

对称加密算法

对称加密算法是一种加密方式,它使用相同的密钥进行加密和解密。常见的对称加密算法包括AES、DES、3DES等。

示例1:使用AES对称加密算法加密和解密数据

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes

def encrypt_AES_GCM(data, key):
    cipher = AES.new(key, AES.MODE_GCM)
    nonce = cipher.nonce
    ciphertext, tag = cipher.encrypt_and_digest(data)
    return nonce + ciphertext + tag

def decrypt_AES_GCM(ciphertext, key):
    nonce = ciphertext[:16]
    tag = ciphertext[-16:]
    ciphertext = ciphertext[16:-16]
    cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
    data = cipher.decrypt_and_verify(ciphertext, tag)
    return data

key = get_random_bytes(16)
data = b'Hello, world!'
ciphertext = encrypt_AES_GCM(data, key)
plaintext = decrypt_AES_GCM(ciphertext, key)

print('Key:', key)
print('Ciphertext:', ciphertext)
print('Plaintext:', plaintext)

在这个示例中,我们使用Crypto库中的AES模块实现了对称加密算法。我们首先定义了encrypt_AES_GCM和decrypt_AES_GCM两个函数,分别用于加密和解密数据。我们使用get_random_bytes函数生成一个16字节的随机密钥key。我们使用AES.new函数创建一个AES对象cipher,并使用MODE_GCM模式进行加密。我们使用cipher.nonce获取一个16字节的随机数nonce,使用cipher.encrypt_and_digest函数对数据进行加密,并获取密文ciphertext和tag。我们将nonce、ciphertext和tag拼接在一起,返回加密后的数据。

在decrypt_AES_GCM函数中,我们首先从密文中获取nonce和tag,使用ciphertext[16:-16]获取加密后的数据。我们使用AES.new函数创建一个AES对象cipher,并使用MODE_GCM模式进行解密。我们使用cipher.decrypt_and_verify函数对数据进行解密,并获取明文data。最后,我们返回解密后的数据。

在主程序中,我们使用get_random_bytes函数生成一个16字节的随机密钥key,使用b'Hello, world!'作为待加密的数据。我们使用encrypt_AES_GCM函数对数据进行加密,使用decrypt_AES_GCM函数对数据进行解密。最后,我们输出密钥、密文和明文。

非对称加密算法

非对称加密算法是一种加密方式,它使用公钥和私钥进行加密和解密。常见的非对称加密算法包括RSA、DSA、ECC等。

示例2:使用RSA非对称加密算法加密和解密数据

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

def encrypt_RSA_OAEP(data, public_key):
    cipher = PKCS1_OAEP.new(public_key)
    ciphertext = cipher.encrypt(data)
    return ciphertext

def decrypt_RSA_OAEP(ciphertext, private_key):
    cipher = PKCS1_OAEP.new(private_key)
    data = cipher.decrypt(ciphertext)
    return data

key = RSA.generate(2048)
public_key = key.publickey()
private_key = key

data = b'Hello, world!'
ciphertext = encrypt_RSA_OAEP(data, public_key)
plaintext = decrypt_RSA_OAEP(ciphertext, private_key)

print('Public key:', public_key.export_key())
print('Private key:', private_key.export_key())
print('Ciphertext:', ciphertext)
print('Plaintext:', plaintext)

在这个示例中,我们使用Crypto库中的RSA模块实现了非对称加密算法。我们首先定义了encrypt_RSA_OAEP和decrypt_RSA_OAEP两个函数,分别用于加密和解密数据。我们使用RSA.generate函数生成一个2048位的RSA密钥对key,使用key.publickey()获取公钥public_key,使用key获取私钥private_key。

在encrypt_RSA_OAEP函数中,我们使用PKCS1_OAEP.new函数创建一个PKCS1_OAEP对象cipher,并使用公钥进行加密。我们使用cipher.encrypt函数对数据进行加密,并获取密文ciphertext。最后,我们返回加密后的数据。

在decrypt_RSA_OAEP函数中,我们使用PKCS1_OAEP.new函数创建一个PKCS1_OAEP对象cipher,并使用私钥进行解密。我们使用cipher.decrypt函数对数据进行解密,并获取明文data。最后,我们返回解密后的数据。

在主程序中,我们使用RSA.generate函数生成一个2048位的RSA密钥对key,使用b'Hello, world!'作为待加密的数据。我们使用encrypt_RSA_OAEP函数对数据进行加密,使用decrypt_RSA_OAEP函数对数据进行解密。最后,我们输出公钥、私钥、密文和明文。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python中常见的加密解密算法总结 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python构建自动在线刷视频的实现

    下面是Python构建自动在线刷视频的完整攻略,主要分为两个部分:自动化操作和视频播放。 自动化操作 使用Python自动化打开网页、模拟用户登录,进入播放页,全屏播放,实现视频自动播放。这个过程需要用到Selenium和WebDriver。 步骤1:安装Selenium 在终端中输入以下命令: pip install selenium 步骤2:安装WebD…

    python 2023年5月19日
    00
  • python使用openpyxl库读写Excel表格的方法(增删改查操作)

    下面我将为你详细讲解“Python使用Openpyxl库读写Excel表格的方法(增删改查操作)”的完整实例教程。 1. 安装Openpyxl库 我们在使用Openpyxl库之前,需要先安装它。安装方法非常简单,只需要在终端中使用pip命令即可。在终端中输入以下命令: pip install openpyxl 如果没有权限,可以在命令前加上sudo执行。 s…

    python 2023年5月13日
    00
  • Django后端接收嵌套Json数据及解析详解

    在Django后端,接收嵌套JSON数据并解析是一个常见的需求。以下是Django后端接收嵌套JSON数据及解析的详细攻略: 接收嵌套JSON数据 要接收嵌套JSON数据,可以使用request.body属性获取请求体,并使用json模块的loads()函数将请求体解析为Python对象。以下是接收嵌套JSON数据的示例: import json def m…

    python 2023年5月14日
    00
  • Python实现的一个找零钱的小程序代码分享

    下面是 Python 实现的一个找零钱的小程序代码分享攻略全过程: 1. 需求分析 首先,我们需要确定程序实现的目标和功能,即需要实现一个找零钱的小程序,用户输入支付金额和实际金额,程序返回找零的钱数。 2. 程序设计 2.1 界面设计 在界面设计中,我们可以使用 Python 中的 input 函数获取用户的输入。具体如下: # 获取用户输入的支付金额和实…

    python 2023年5月23日
    00
  • 如何以 Python 方式集成 pynba 和 Flask?

    【问题标题】:Howto pythonic way to integrate pynba and Flask?如何以 Python 方式集成 pynba 和 Flask? 【发布时间】:2023-04-03 05:37:01 【问题描述】: 之后点安装烧瓶点安装pynba 我试试下面的代码 进口烧瓶 导入pynba.wsgi FlaskWithPynba 类…

    Python开发 2023年4月8日
    00
  • Python实现JSON反序列化类对象的示例

    下面就为您详细讲解“Python实现JSON反序列化类对象的示例”的完整攻略。 什么是JSON序列化与反序列化 JSON是一种轻量级的数据交换格式,被广泛用于前端和后端进行数据传递。在使用JSON进行数据传递时,需要进行序列化和反序列化操作。其中,序列化是将Python对象转换为JSON字符串的过程,而反序列化则是将JSON字符串转换为Python对象的过程…

    python 2023年6月3日
    00
  • Python实现Harbor私有镜像仓库垃圾自动化清理详情

    Python实现Harbor私有镜像仓库垃圾自动化清理详情 在使用容器时,镜像管理非常重要。一个镜像存在于仓库中,仓库最好具有自动清理功能以避免垃圾堆积。Harbor 是一款私有 Docker 镜像仓库管理软件,它可以实现镜像仓库的自动化清理功能。这里我们将详细讲解如何使用 Python 实现 Harbor 私有镜像仓库垃圾自动化清理。 安装依赖 首先,我们…

    python 2023年6月5日
    00
  • Python文本处理简单易懂方法解析

    Python文本处理是一种处理文本数据的技术,可以用于文本分析、文本挖掘、自然语言处理等领域。以下是Python文本处理简单易懂方法解析的详细攻略: 分词 分词是将文本分割成单词或词组的过程。可以使用Python的nltk库进行分词。以下是一个分词的示例: import nltk text = "This is an example sentenc…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部