Python PyCryptodome库介绍与实例

Python PyCryptodome库介绍与实例

    • 1. 安装
    • 2. 基本概念
    • 3. 使用场景和示例代码
      • 3.1 对称加密 - AES
      • 3.2 非对称加密 - RSA
      • 3.3 哈希函数 - SHA256
      • 3.4 消息认证码 - HMAC
    • 4. 总结

PyCryptodome是一个强大的Python加密库,提供了各种加密算法和工具。本文将介绍PyCryptodome的基本概念和常见使用场景,并通过示例代码展示如何使用该库。

1. 安装

首先,我们需要安装PyCryptodome库:

pip install pycryptodome

2. 基本概念

PyCryptodome提供了以下几种主要类型的加密算法:

  • 对称加密: AES, DES, 3DES等
  • 非对称加密: RSA, DSA, ECC等
  • 哈希函数: SHA256, MD5等
  • 消息认证码(MAC): HMAC
  • 数字签名

3. 使用场景和示例代码

3.1 对称加密 - AES

AES (Advanced Encryption Standard) 是一种广泛使用的对称加密算法。以下是使用AES加密和解密的示例:

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpaddef encrypt_aes(plaintext, key):cipher = AES.new(key, AES.MODE_ECB)padded_data = pad(plaintext.encode(), AES.block_size)return cipher.encrypt(padded_data)def decrypt_aes(ciphertext, key):cipher = AES.new(key, AES.MODE_ECB)padded_data = cipher.decrypt(ciphertext)return unpad(padded_data, AES.block_size).decode()# 生成一个16字节的随机密钥
key = get_random_bytes(16)# 加密
message = "Hello, PyCryptodome!"
encrypted = encrypt_aes(message, key)
print(f"加密后: {encrypted.hex()}")# 解密
decrypted = decrypt_aes(encrypted, key)
print(f"解密后: {decrypted}")

3.2 非对称加密 - RSA

RSA是一种常用的非对称加密算法,适用于数据加密和数字签名。以下是RSA加密和解密的示例:

from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import binascii# 生成RSA密钥对
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()# 加密
message = b"Hello, RSA!"
rsa_public_key = RSA.import_key(public_key)
rsa_public_key = PKCS1_OAEP.new(rsa_public_key)
encrypted = rsa_public_key.encrypt(message)
print(f"加密后: {binascii.hexlify(encrypted)}")# 解密
rsa_private_key = RSA.import_key(private_key)
rsa_private_key = PKCS1_OAEP.new(rsa_private_key)
decrypted = rsa_private_key.decrypt(encrypted)
print(f"解密后: {decrypted.decode()}")

3.3 哈希函数 - SHA256

哈希函数用于生成消息摘要,常用于数据完整性检查和密码存储。以下是使用SHA256哈希的示例:

from Crypto.Hash import SHA256def hash_sha256(data):hash_object = SHA256.new(data=data.encode())return hash_object.hexdigest()message = "Hello, SHA256!"
hashed = hash_sha256(message)
print(f"SHA256哈希值: {hashed}")

3.4 消息认证码 - HMAC

HMAC (Hash-based Message Authentication Code) 用于验证消息的完整性和真实性。以下是HMAC的使用示例:

from Crypto.Hash import HMAC, SHA256def create_hmac(key, message):hmac = HMAC.new(key, msg=message.encode(), digestmod=SHA256)return hmac.hexdigest()def verify_hmac(key, message, received_mac):hmac = HMAC.new(key, msg=message.encode(), digestmod=SHA256)try:hmac.hexverify(received_mac)return Trueexcept ValueError:return False# 创建HMAC
secret_key = b"my_secret_key"
message = "Hello, HMAC!"
mac = create_hmac(secret_key, message)
print(f"HMAC: {mac}")# 验证HMAC
is_valid = verify_hmac(secret_key, message, mac)
print(f"HMAC验证结果: {is_valid}")

4. 总结

PyCryptodome提供了丰富的加密功能,可以满足多种安全需求。本文介绍了几个常见的使用场景,包括对称加密、非对称加密、哈希函数和消息认证码。在实际应用中,请根据具体需求选择合适的加密算法和参数,并确保正确管理密钥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/866690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【专业指南】移动硬盘坏道下的数据恢复之道

移动硬盘坏道揭秘:数据安全的隐形挑战 在数据日益成为核心资产的今天,移动硬盘作为便携存储的代名词,承载着无数用户的重要信息。然而,随着使用时间的增长和不当操作的影响,移动硬盘可能会遭遇“坏道”这一棘手问题。…

眼动追踪技术 | 眼动的分类和模型

摘要 灵长类动物用于调整中央凹位置的正常眼动,几乎都可以归结为五种基本类型的组合:扫视、平稳追踪、聚散、前庭眼震和生理性眼震(与注视相关的微小运动)。聚散运动用于将双眼聚焦于远处的目标(深度知觉)。其他运动(如适应和聚焦)指的是眼动的非位置变…

Linux权限介绍

目录 1.用户切换 2.权限 (1)权限介绍 (2)文件类型 (3)权限组成 (4)权限修改 (5)重新认识 (6)底层操作 (一&#x…

事件分发机制:demo复现自定义ViewGroup点击事件不起作用

几年前遇到的一个bug,不弄清楚心里就是不舒服! 平时应用开发中,经常遇到的UI需求,例如抖音的设置界面,如下图所示: 很容易想到,自定义一个Layout,左边一个图标,中间文…

无痕消除笔怎么用?3款工具教你完美消除

无痕消除笔怎么用?无痕消除笔在图片编辑中扮演着至关重要的角色。它利用先进的图像处理技术,让用户只需简单几步操作,就能轻松抹除图片上任何不想要的细节,无论是明显的瑕疵、多余的文字还是恼人的水印。这一功能不仅提高了编辑效…

华为大咖说 企业应用AI大模型的“道、法、术” -- 法:落地篇 (上)

本文作者:郑岩(华为云AI变革首席专家)全文约2865字,阅读约需7分钟 在探讨企业如何应用AI大模型的“道、法、术”系列文章的前两篇文章中,我们已经深化了对“AI大模型”的理解,并通过“AI场景12问”洞察了潜…

鸿蒙 HarmonyOS Next 路由 不废话 全干货

一、页面的创建 (1)直接通过创建一个新的Page的方式创建 (2)先创建一个 ArkTs File文件,然后在resources/base/profile/main_pages.json中加上页面对应的src路径,下面的Index_3.ets文件是通过创建ArkTs Fi…

Linux安装达梦

文章目录 前言一、docker安装1.下载镜像2.导入镜像3.生成容器 二、ios安装1.环境准备2.iso安装3.配置实例4.注册服务5.启停服务 总结 前言 公司要求我将数据从oracle迁移到达梦数据库,这个国产数据库以前没用过,所以记录一下这次的安装过程。 一、docke…

后端部署Jar包 | 启动失败系列问题(图解-BuiId,Maven)

目录 项目的构建 打包前的准备 合理配置pox.xml文件 Build 打包方式 Maven打包方式 Jar包部署 测试后端接口 项目的构建 我的项目是SpringBoot2脚手架 先准备一个相对于的数据库依赖 数据库的任意库 Yaml配置后 才能正常在IDEA中跑起来 打包前的准备 合理配置pox.xm…

rs轨迹校验

最近发现有些网站的rs似乎上了轨迹校验,附图: 写了个解rscookie的插件,可以精准看到rs更改了那些校验点,需要做什么处理,就很舒服 有需要轨迹代码或者瑞数相关的可以联系 let v huaqu0727

Feign远程调用,请求头丢失情况

现象 解决方案 import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.RequestContextHolde…

编译开源车载Linux操作系统AGL

随着汽车行业的智能化和互联化趋势日益明显,车载系统作为汽车的重要组成部分,其性能和功能也受到了越来越多的关注。Linux作为一款开源的操作系统,具有稳定性高、安全性强、可定制性好等优点,因此成为了车载系统领域的热门选择。 …

我应该怎么办?(关于专升本篇!)

kimi,我需要你的帮助,我现在在湖北工业职业技术学院,我2025年将要开始进行专升本,预计在明年4月26日进行专升本,但是我现在很迷茫,自己感觉自己很懒惰,自己每天都过得很迷糊! 面对专…

SSM+汽车停车位共享APP-计算机毕业设计源码041534

摘 要 随着社会经济的快速发展,我国机动车保有量大幅增加,城市交通问题日益严重。为缓解用户停车难问题,本文设计并实现了APP停车位共享系统.该系统通过错峰停车达到车位利用率最大化.基于现状分析,本文结合实际停车问题,从系统应用流程,系统软硬件设计和系统实现三方面进行详细…

MUNIK解读ISO26262--什么是系统安全分析

功能安全之系统阶段-系统安全分析 安全分析在ISO26262标准中横跨了多个阶段例如:概念阶段、系统架构阶段、硬件详设阶段和软件详设阶段,其中part5中的安全分析工具FMEDA是标准中唯一一个和ASIL等级挂钩的,在Part5中也用了很大篇幅在介绍该安…

为什么英智智能宝能让律师工作事半功倍

大语言模型能够极大提高人们的知识理解能力和知识服务能力,法律服务是典型的知识服务领域,据悉律师有38%的任务都是重复性工作,这些任务有潜力被大模型替代。 但在法律行业中的高度专业且复杂的问题时,通用型大模型的回答虽能提供…

CentOS 离线安装部署 MySQL 8详细教程

1、简介 MySQL是一个流行的开源关系型数据库管理系统(RDBMS),它基于SQL(Structured Query Language,结构化查询语言)进行操作。MySQL最初由瑞典的MySQL AB公司开发,后来被Sun Microsystems公司…

电子元器件基础知识总结

1.0 电阻 电阻的定义:导体对电流的阻碍作用称之为电阻【每一种导体都有内阻的存在】 闭合的电路中电子的移动输出有多快?电子在导体中的移动速度是很慢的 【铜线中电流的移动速度】 电子受到原子核的束缚,移动的速度很慢,在电压足…

4面体空间5点结构种类与占比

在30个点的4面体中取5个点,有30*29*28*27*26/(5*4*3*2)142506种取法, 这里要求5个点必须是直链或支链。共有496个组合符合要求,按平移对称性可分成181个不同的结构 结构 数量 结构 数量 结构 数量 结构 数量 结构 数量 结构 数量 …

Harbor:打造docker私有镜像库

part 1. Harbor概览 harbor:我们的使命是成为 Kubernetes 值得信赖的云原生存储库 为什么要使用Harbor? Harbor是VMware公司开源的企业级容器镜像仓库管理平台,它提供了比基本Docker Registry更丰富的功能,特别适合企业环境使用。提供了镜像存储、签名…