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

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日

相关文章

  • matplotlib实现自定义散点形状marker的3种方法

    当我们使用matplotlib绘制散点图时,我们可以自定义散点的形状marker。通常情况下,我们会使用matplotlib提供的基本形状,比如圆形、正方形等。但是,有时候我们希望自定义更特殊的形状,比如心形、五角星等。本文将介绍3种方法来实现自定义散点形状的marker。 方法一:使用matplotlib提供的Path类 第一种方法是通过创建Path对象来…

    python 2023年5月18日
    00
  • http请求 request失败自动重新尝试代码示例

    在进行HTTP请求时,有时会因为网络原因或其他问题导致请求失败。为了确保请求的可靠性,我们可以在请求失败时自动重新尝试。本文将介绍如何在Python中实现HTTP请求失败自动重新尝试的方法,并提供两个示例代码。 方法1:使用requests库实现HTTP请求失败自动重新尝试 使用requests库实现HTTP请求失败自动重新尝试是Python中最常用的方法之…

    python 2023年5月15日
    00
  • python可视化text()函数使用详解

    Python可视化text()函数使用详解 简介 text()函数是python可视化工具中常用的函数之一,可以在matplotlib、seaborn等常用工具中使用。它的作用是在图表中添加文字。可以用于标注数据点、图例、坐标轴等等。 函数语法 matplotlib.pyplot.text(x, y, s, fontdict=None, withdash=F…

    python 2023年6月5日
    00
  • Python做简单的字符串匹配详解

    以下是详细讲解“Python做简单的字符串匹配详解”的完整攻略。 Python做简单的字符串匹配 在Python中,我们可以使用re模块进行字符串匹配。re模块提供了一系函数,用于处理正则表达式。下面是一个简单的字符串匹配例: import re text = "Hello World" pattern = "Hello&quo…

    python 2023年5月14日
    00
  • Python提升Excel效率的5个方法!(实例演示)

    使用Python进行Excel自动化,可以有效地帮助我们提高工作效率和减少出错率。 本文将详细介绍使用Python操作Excel的5种提升工作效率的方法。具体有以下: 5种自动化操作Excel的方法 读取和写入Excel文件 使用Python中的第三方库(如openpyxl、xlrd、xlwt、xlutils等)可以读取和写入Excel文件。比如,我们可以读…

    2023年2月26日
    00
  • WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法

    让我来详细讲解“WINDOWS同时安装Python2和Python3后pip错误的解决方法”的完整攻略。 问题描述 在 Windows 系统中,我们有时需要同时安装 Python2 和 Python3,并且使用 pip 安装 Python 包时可能会遇到如下错误: Fatal error in launcher: Unable to create proce…

    python 2023年5月14日
    00
  • Python正则表达式匹配中文用法示例

    Python正则表达式匹配中文用法示例 在Python中,我们可以使用正则表达式进行中文字符串的匹配和替换。在正表达式中,中文字符使用Unicode编码进行匹配。本攻略将详细讲解如何使用Python正则表达式匹配中文字符串,包括如何使用Unicode码进行匹配、如何使用re模块进行匹配。 使用Unicode编码进行匹配 在Python中,我们可以使用Unic…

    python 2023年5月14日
    00
  • 正则表达式(简单易懂篇)

    正则表达式是一种用于匹配字符串的模式,它可以用来检查字符串是否符合某种模式,或者从字符串中提取出符合某种模式的子串。在 Python 中,我们可以使用 re 模块来实现正则表达式的匹配。下面将详细讲解正则表达式的基本语法和用法。 1. 正则表达式的基本语法 正则表达式由普通字符和特殊字符组成。普通字符表示它本身,而特殊字符则表示一些特殊的含义。下面是一些常用…

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