Python 加密解密技巧大揭秘:让你的数据安全无忧
建议食用原文链接效果更佳
Python 加密解密技巧大揭秘:让你的数据安全无忧
今天我们将探讨在 Python 中常见的加密解密算法,并通过代码案例来帮助大家更好地理解它们的实现。
在开始之前,请确保您已经安装了 pycryptodome 这个库。您可以使用以下命令进行安装:
pip install pycryptodome
1. DES 加密算法
DES(Data Encryption Standard)是一种对称加密算法,其密钥长度为 56 位。以下是一个简单的 Python 实现:
from Crypto.Cipher import DES
from Crypto.Util.Padding import pad, unpad
import base64
# 要加密的文本
text = "Hello, world!"
# 使用 DES-ECB 模式加密
cipher = DES.new('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', DES.MODE_ECB)
cipher_text = base64.b64encode(cipher.encrypt(pad(text.encode(), DES.block_size)))
print("DES 加密结果:", cipher_text.decode('utf-8'))
# 使用 DES-ECB 模式解密
plain_text = unpad(cipher.decrypt(base64.b64decode(cipher_text)), DES.block_size)
print("DES 解密结果:", plain_text.decode('utf-8'))
2. 3DES 加密算法
3DES(Triple Data Encryption Standard)是一种对称加密算法,它是 DES 的增强版。以下是一个简单的 Python 实现:
from Crypto.Cipher import DES3
from Crypto.Util.Padding import pad, unpad
import base64
# 要加密的文本
text = "Hello, world!"
# 使用 3DES-ECB 模式加密
cipher = DES3.new('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', DES3.MODE_ECB)
cipher_text = base64.b64encode(cipher.encrypt(pad(text.encode(), DES3.block_size)))
print("3DES 加密结果:", cipher_text.decode('utf-8'))
# 使用 3DES-ECB 模式解密
plain_text = unpad(cipher.decrypt(base64.b64decode(cipher_text)), DES3.block_size)
print("3DES 解密结果:", plain_text.decode('utf-8'))
3. SHA-256 加密算法
SHA-256(Secure Hash Algorithm 256)是一种哈希算法,它不属于加密算法,但是它可以对数据进行摘要,生成一个固定长度的摘要值,通常用于数据完整性验证和数字签名等场景。以下是一个简单的 Python 实现:
import hashlib
# 要加密的文本
text = "Hello, world!"
# 使用 SHA-256 进行加密
hash_object = hashlib.sha256(text.encode())
hash_hex = hash_object.hexdigest()
print("SHA-256 加密结果:", hash_hex)
4. RSA 加密算法(非对称加密)
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它需要一对密钥,分别为公钥和私钥。以下是一个简单的 Python 实现:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Random import get_random_bytes
import base64
# 生成 RSA 密钥对
key = RSA.generate(2048)
# 获取私钥和公钥
private_key = key.export_key()
public_key = key.publickey().export_key()
# 要加密的文本
text = "Hello, world!"
#使用 RSA 公钥加密
cipher = PKCS1_OAEP.new(public_key)
cipher_text = base64.b64encode(cipher.encrypt(pad(text.encode(), AES.block_size)))
print("RSA 加密结果(公钥):", cipher_text.decode('utf-8'))
#使用 RSA 私钥解密
plain_text = unpad(cipher.decrypt(base64.b64decode(cipher_text)), AES.block_size)
print("RSA 解密结果(私钥):", plain_text.decode('utf-8'))
5. AES 加密算法
AES(Advanced Encryption Standard)是一种对称加密算法,它是目前广泛应用的加密标准之一。以下是一个简单的 Python 实现:
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
# 要加密的文本
text = "Hello, world!"
# 使用 AES-CBC 模式加密
cipher = AES.new('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890', AES.MODE_CBC)
cipher_text = base64.b64encode(cipher.encrypt(pad(text.encode(), AES.block_size)))
print("AES 加密结果(CBC 模式):", cipher_text.decode('utf-8'))
# 使用 AES-CBC 模式解密
plain_text = unpad(cipher.decrypt(base64.b64decode(cipher_text)), AES.block_size)
print("AES 解密结果(CBC 模式):", plain_text.decode('utf-8'))
以上就是关于 Python 常见加密解密算法的解析及代码案例。
加密和解密算法在实际应用中扮演着重要的角色,掌握这些算法对于程序员和初学者来说是非常有益的。
希望这篇文章能对您有所帮助。
相关文章:
Python 加密解密技巧大揭秘:让你的数据安全无忧
建议食用原文链接效果更佳 Python 加密解密技巧大揭秘:让你的数据安全无忧 今天我们将探讨在 Python 中常见的加密解密算法,并通过代码案例来帮助大家更好地理解它们的实现。 在开始之前,请确保您已经安装了 pycryptodome 这个库。您可以使用…...
C#判断字符是否为utf16编码
unity截取显示微信昵称后,出现异常Error: UTF-16 to UTF-8 conversion failed because the input string is invalid,原因是截取字符串刚好截到了表情后面,解决思路是从截取到的索引向前遍历,找第一个不是utf16编码的字符…...

centos7上hive3.1.3安装及配置
1、安装背景; hive是基于hadoop的数据仓库软件,部署运行在linux系统之上,安装之前必须保证hadoop环境运行正常,hive本身不是分布式软件,它的分布式主要是借助hadoop实现,存储是hdfs,计算是mapr…...

Redis面试题(笔记)
目录 1.缓存穿透 2.缓存击穿 3.缓存雪崩 小结 4.缓存-双写一致性 5.缓存-持久性 6.缓存-数据过期策略 7.缓存-数据淘汰策略 数据淘汰策略-使用建议 数据淘汰策略总结 8.redis分布式锁 setnx redission 主从一致性 9.主从复制、主从同步 10.哨兵模式 服务状态监…...

iPhone 15 Pro展示设计:7项全新变化呈现
我们不应该再等iPhone 15 Pro在苹果9月12日的“Wonderlust”活动上发布了,而且可能会有很多升级。有传言称,iPhone 15 Pro将是自iPhone X以来最大的飞跃,这要归功于大量的新变化,从带有更薄边框的新钛框架到顶级A17仿生芯片和动作…...
【六袆 - Windows】PL/SQL instantclient安装包下载;PL/SQL双击登录配置
安装 PL/SQL 15 OMIT Oracle Instant Client Downloads for Microsoft Windows (x64) 64-bit https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html 配置 # tnsnames.ora Network Configuration File:E:\oracle\product\10.2.0\db_1\ne…...

Springboot+mybatis-plus+dynamic-datasource 切换数据源失败问题总结
Springbootmybatis-plusdynamic-datasourceDruid 多数据源 切换数据源失败总结 文章目录 Springbootmybatis-plusdynamic-datasourceDruid 多数据源 切换数据源失败总结0.前言1. dynamic-datasource 切换数据源失败场景总结1. spring-batch整合情况下切换数据源异常解决办法&am…...

QuantLib学习笔记——InterestRate的应用
⭐️ 单利还是复利 巴菲特老爷子有句名言:“人生就像滚雪球,重要的是发现很湿的雪和很长的坡。” 很湿的雪,指的就是复利。很长的坡,指的就是时间。很湿的雪和很长的坡组合起来,就能滚成巨大的雪球。 哈哈࿰…...

记录--解决前端内存泄漏:问题概览与实用解决方案
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 内存泄漏是前端开发中的一个常见问题,可能导致项目变得缓慢、不稳定甚至崩溃。在本文中,我们将深入探讨在JavaScript、Vue和React项目中可能导致内存泄漏的情况,并提…...

IP初学习
1.IP报文 首部长度指的是报头长度,用于分离报头和有效载荷 2.网段划分 IP地址 目标网络 目标主机 3.例子 4.特殊的IP地址 5.真正的网络环境 6.调制解调器 “猫”,学名叫宽带无线猫 7.NAT 源IP在内网环境不断被替换 8.私有IP不能出现在公网上 因…...
live5555 testProgs目录
文章目录 测试testProgs视频流直播流注意: 测试 testProgs 当涉及到许多示例程序时,解释每一个都可能会变得非常冗长。然而,我可以为你提供一些关键示例程序的简要解释,以帮助你了解每个示例的用途和功能: testOnDem…...
yolov5模型s,l,m,x的区别
yolov5s 是什么?yolov5系列最小的模型,s是small。 适合什么情况下使用?适合在计算资源有限的设备上使用。如移动设备或边缘设备。 速度和准确率:速度最快,准确率最低。 输入分辨率:通常为640x640 # Param…...

Springboot 实践(13)spring boot 整合RabbitMq
前文讲解了RabbitMQ的下载和安装,此文讲解springboot整合RabbitMq实现消息的发送和消费。 1、创建web project项目,名称为“SpringbootAction-RabbitMQ” 2、修改pom.xml文件,添加amqp使用jar包 <!-- RabbitMQ --> <dependency&g…...

YoloV8改进策略:轻量级Slim Neck打造极致的YoloV8
文章目录 摘要Yolov8官方结果源码改进方法测试结果总结摘要 论文链接:https://arxiv.org/ftp/arxiv/papers/2206/2206.02424.pdf 作者研究了增强 CNN 学习能力的通用方法,例如 DensNet、VoVNet 和 CSPNet,然后根据这些方法的理论设计了 Slim-Neck 结构。 使用轻量级卷积…...

使用java代码给Excel加水印,代码全,进阶版
以下代码,亲测可以跑通 1、上一篇博客用了Apache POI库3.8的版本的形式对Excel加了水印,但是最近主线版本用了4.1.2的形式,由于为了保持版本的兼容性,下面有开发了Apache POI的4.1.2的版本号的方案。 pom文件为: <d…...
day37:网编day4,多点通信和并发服务器
一、广播接收方: #include <myhead.h>#define ERR_MSG(msg) do{\ fprintf(stderr,"__%d__\n",__LINE__);\ perror(msg);\ }while(0)#define BRD_IP "192.168.114.255" #define BRD_PORT 8888int main(int argc, const char *argv[]) {//…...

STM32 硬件IIC 控制OLED I2C卡死问题
1. STM32L151C8T6 硬件IIC 控制OLED 屏,OLED 驱动IC CH1116G, 查阅OLED 数据手册 2. STM32 硬件IIC 初始化,用的标准库,固件库 // stm32l151c8t6 as master, oled control ic (CH1116G) as slave, and communicate by master iic2 void STM3…...

Redis图文指南
1、什么是 Redis? Redis(REmote DIctionary Service)是一个开源的键值对数据库服务器。 Redis 更准确的描述是一个数据结构服务器。Redis 的这种特殊性质让它在开发人员中很受欢迎。 Redis不是通过迭代或者排序方式处理数据,而是…...
C++17 std::string_view介绍与使用
std::string_view介绍 std::string_view是C17增加的新内容。它是一个轻量级的、只读的字符串视图,可以用来表示一个字符串或字符串的一部分。std::string_view可以提高代码的可读性、可维护性和性能。 std::string_view与std::string的主要区别在于,st…...

写得了代码,焊得了板!嵌入式开发工程师必修之代码管理方案(下)
目录 极狐GitLab嵌入式开发场景解决方案 3.1 高可用部署与灾备 3.2 组织管理 3.3 分支策略 3.4 分支保护 3.5 推送规则 3.6 代码评审 3.7 数据保护 3.8 其他相关 本文来自 武让 极狐GitLab 高级解决方案架构师 💡 前两篇文章,作者介绍了嵌入式开…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...