Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签

yizhihongxing

Python3.7基于pycryptodome的AES加密解密

安装pycryptodome模块

pip install pycryptodome

AES加密实现

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
from Crypto.Random import get_random_bytes

def aes_encrypt(plain_text, key):
    iv = get_random_bytes(16)
    cipher = AES.new(key, AES.MODE_CBC, iv)
    cipher_text = cipher.encrypt(pad(plain_text.encode(), AES.block_size))
    return iv + cipher_text

AES解密实现

from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad

def aes_decrypt(cipher_text, key):
    iv = cipher_text[:16]
    cipher = AES.new(key, AES.MODE_CBC, iv)
    plain_text = unpad(cipher.decrypt(cipher_text[16:]), AES.block_size)
    return plain_text.decode()

示例:

key = get_random_bytes(16)
plain_text = "hello world"
cipher_text = aes_encrypt(plain_text, key)
print(cipher_text)
print(aes_decrypt(cipher_text, key))

Python3.7基于pycryptodome的RSA加密解密

生成RSA密钥对

from Crypto.PublicKey import RSA

def generate_rsa_key_pair():
    key = RSA.generate(2048)
    return key.publickey(), key

RSA加密实现

from Crypto.Cipher import PKCS1_OAEP

def rsa_encrypt(plain_text, public_key):
    cipher = PKCS1_OAEP.new(public_key)
    return cipher.encrypt(plain_text.encode())

RSA解密实现

from Crypto.Cipher import PKCS1_OAEP

def rsa_decrypt(cipher_text, private_key):
    cipher = PKCS1_OAEP.new(private_key)
    plain_text = cipher.decrypt(cipher_text)
    return plain_text.decode()

示例

public_key, private_key = generate_rsa_key_pair()
plain_text = "hello world"
cipher_text = rsa_encrypt(plain_text, public_key)
print(cipher_text)
print(rsa_decrypt(cipher_text, private_key))

Python3.7基于pycryptodome的加签验签

生成RSA密钥对

from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256

def generate_rsa_key_pair():
    key = RSA.generate(2048)
    return key.publickey(), key

RSA私钥加签

def rsa_sign(message, private_key):
    h = SHA256.new(message.encode())
    signature = pkcs1_15.new(private_key).sign(h)
    return signature

RSA公钥验签

def rsa_verify(message, signature, public_key):
    h = SHA256.new(message.encode())
    try:
        pkcs1_15.new(public_key).verify(h, signature)
        return True
    except (ValueError, TypeError):
        return False

示例

public_key, private_key = generate_rsa_key_pair()
message = "hello world"
signature = rsa_sign(message, private_key)
print(signature)
print(rsa_verify(message, signature, public_key))

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 编写多线程Python服务器 最适合基础

    以下是“编写多线程Python服务器 最适合基础”的完整攻略。 1. 概述 本文将介绍如何使用 Python 编写一个多线程服务器,并提供两个具体示例说明,让您更好地理解多线程服务器的实现过程。 2. 多线程服务器的原理 多线程服务器是通过创建多个线程来同时处理多个客户端连接请求,从而提高服务器的并发处理能力。当有新的客户端连接请求到来时,服务器会创建一个新…

    python 2023年5月18日
    00
  • 如何利用python创建、读取和修改CSV数据文件

    当然,下面我将详细讲解如何利用python创建、读取和修改CSV数据文件的完整攻略。 创建CSV文件 要创建CSV文件,我们可以使用Python内置的csv库。可以使用csv.writer对象将数据写入CSV文件中。假设我们要写入以下数据: 名称 得分 Alice 90 Bob 85 Cindy 75 David 80 Emily 95 以下是Python代…

    python 2023年6月3日
    00
  • python 多进程和协程配合使用写入数据

    为了更好地理解多进程和协程配合使用写入数据的完整攻略,我们需要先详细了解一下多进程和协程的概念以及特点。 多进程是指同一时间内,运行着多个进程在同一台计算机上。每个进程通过操作系统分配独立的内存空间,互相之间不会干扰。多进程可以利用现代计算机的多核处理器,可以同时执行多个任务,提高CPU利用率和运行效率。 协程是轻量级的线程,它可以在同一个线程中实现多个并发…

    python 2023年5月19日
    00
  • Python文件处理、os模块、glob模块

    Python文件处理是指在Python编程语言中对文件的创建、打开、读取、写入和关闭等操作。与文件操作相关的模块主要有os模块、glob模块和shutil模块等。其中,os模块主要用于操作文件路径,文件夹和系统相关信息;glob模块则是用于对目录中所有符合条件的文件进行查找;shutil模块则是复制、移动、重命名和删除文件等操作。本篇攻略主要介绍os模块和g…

    python 2023年5月20日
    00
  • python基础操作列表切片解析

    以下是“Python基础操作列表切片解析”的完整攻略。 1. 什么是列表切片 列表切片是Python中一种用于获取中部分元素的方法。它的语法形式为: list[start:end:step] 其中,list是一个列表,start是起位置,end是结束位置,step是步长。 列表切片的作用是获取列表中从起始位置到结束位置之间的元素,步长step。 2. 列表切…

    python 2023年5月13日
    00
  • 用python 制作图片转pdf工具

    下面是使用 Python 制作图片转 PDF 工具的完整攻略: 步骤一:安装必要的Python库 在使用 Python 制作图片转 PDF 工具前,需要安装必要的 Python 库。可以通过 pip 命令安装,例如: pip install pillow pip install img2pdf 其中,pillow 库用于图片处理,img2pdf 库用于将图片…

    python 2023年6月5日
    00
  • Python高级文件操作之shutil库详解

    Python高级文件操作之shutil库详解 在Python中,文件操作是非常常见的操作之一,随着业务的发展,文件操作不仅仅是简单的读、写,还需要进行剪切、复制、压缩、解压等高级操作。shutil库就是一个专门用于高级文件操作的工具库。 一、shutil库的安装 shutil是Python自带的标准库,所以不需要额外安装。只需要在Python程序中导入相关包…

    python 2023年5月19日
    00
  • Python设计足球联赛赛程表程序的思路与简单实现示例

    Python设计足球联赛赛程表程序的思路与简单实现示例 思路 设计一个足球联赛赛程表程序可以分为以下几个步骤: 确定参加联赛的球队数量n。 根据参赛球队数量n,计算比赛轮次r。 如果n为偶数,轮次r为n-1; 如果n为奇数,轮次r为n。 生成轮次的比赛赛程表,其中需要满足以下规则: 每个球队一轮只能进行一场比赛,且每个球队在赛程表上需要出现r次; 每个球队不…

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