当前位置: 首页 > news >正文

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编码的字符&#xf…...

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的应用

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

记录--解决前端内存泄漏:问题概览与实用解决方案

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 内存泄漏是前端开发中的一个常见问题,可能导致项目变得缓慢、不稳定甚至崩溃。在本文中,我们将深入探讨在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的下载和安装&#xff0c;此文讲解springboot整合RabbitMq实现消息的发送和消费。 1、创建web project项目&#xff0c;名称为“SpringbootAction-RabbitMQ” 2、修改pom.xml文件&#xff0c;添加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加水印,代码全,进阶版

以下代码&#xff0c;亲测可以跑通 1、上一篇博客用了Apache POI库3.8的版本的形式对Excel加了水印&#xff0c;但是最近主线版本用了4.1.2的形式&#xff0c;由于为了保持版本的兼容性&#xff0c;下面有开发了Apache POI的4.1.2的版本号的方案。 pom文件为&#xff1a; <d…...

day37:网编day4,多点通信和并发服务器

一、广播接收方&#xff1a; #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 屏&#xff0c;OLED 驱动IC CH1116G, 查阅OLED 数据手册 2. STM32 硬件IIC 初始化&#xff0c;用的标准库&#xff0c;固件库 // stm32l151c8t6 as master, oled control ic (CH1116G) as slave, and communicate by master iic2 void STM3…...

Redis图文指南

1、什么是 Redis&#xff1f; Redis&#xff08;REmote DIctionary Service&#xff09;是一个开源的键值对数据库服务器。 Redis 更准确的描述是一个数据结构服务器。Redis 的这种特殊性质让它在开发人员中很受欢迎。 Redis不是通过迭代或者排序方式处理数据&#xff0c;而是…...

C++17 std::string_view介绍与使用

std::string_view介绍 std::string_view是C17增加的新内容。它是一个轻量级的、只读的字符串视图&#xff0c;可以用来表示一个字符串或字符串的一部分。std::string_view可以提高代码的可读性、可维护性和性能。 std::string_view与std::string的主要区别在于&#xff0c;st…...

写得了代码,焊得了板!嵌入式开发工程师必修之代码管理方案(下)

目录 极狐GitLab嵌入式开发场景解决方案 3.1 高可用部署与灾备 3.2 组织管理 3.3 分支策略 3.4 分支保护 3.5 推送规则 3.6 代码评审 3.7 数据保护 3.8 其他相关 本文来自 武让 极狐GitLab 高级解决方案架构师 &#x1f4a1; 前两篇文章&#xff0c;作者介绍了嵌入式开…...

HPM6750 LVGL性能优化:利用TCM与DMA突破嵌入式图形内存瓶颈

1. 项目概述&#xff1a;当LVGL遇上HPM6750&#xff0c;一场关于性能的极限探索最近在嵌入式图形界面开发的圈子里&#xff0c;一个话题热度很高&#xff1a;如何在HPM6750这颗高性能RISC-V MCU上&#xff0c;让LVGL的刷屏性能再上一个台阶&#xff1f;这听起来像是一个常规的优…...

如何5分钟完成浏览器脚本安装:免费网盘直链解析工具终极指南

如何5分钟完成浏览器脚本安装&#xff1a;免费网盘直链解析工具终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 …...

如何快速掌握unnpk:网易游戏资源解包的完整入门指南

如何快速掌握unnpk&#xff1a;网易游戏资源解包的完整入门指南 【免费下载链接】unnpk 解包网易游戏NeoX引擎NPK文件&#xff0c;如阴阳师、魔法禁书目录。 项目地址: https://gitcode.com/gh_mirrors/un/unnpk 你是否曾经好奇过网易游戏《阴阳师》中那些精美的角色立绘…...

深入理解LZFSE核心技术:Lempel-Ziv与FSE编码的完美结合

深入理解LZFSE核心技术&#xff1a;Lempel-Ziv与FSE编码的完美结合 【免费下载链接】lzfse LZFSE compression library and command line tool 项目地址: https://gitcode.com/gh_mirrors/lz/lzfse LZFSE&#xff08;Lempel-Ziv Finite State Entropy&#xff09;是苹果…...

CA-IS3741:四通道高速数字隔离芯片的选型、实测与光耦替代实战

1. 为什么需要高速数字隔离芯片&#xff1f; 在工业自动化、医疗设备、新能源等领域的电子系统中&#xff0c;不同模块之间经常需要进行电气隔离。传统的光耦器件&#xff08;如PC817、TLP521等&#xff09;虽然成本低廉&#xff0c;但在高速信号传输场景下暴露出明显短板。我曾…...

手机录音怎么转文字?2026实测免费付费工具对比与推荐

日常工作和生活中&#xff0c;我们常常需要把手机里的录音、语音转成文字。无论是记录会议内容、整理课堂笔记&#xff0c;还是提取视频文案&#xff0c;一个趁手的转录工具能节省大量时间。本文对市面上主流的手机录音转文字工具进行实测对比&#xff0c;帮你找到最适合的解决…...

(最新版)GitGitHub实操图文详解教程(06)—git status命令

版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 1. 应用场景 git status 是 Git 中最常用的命令之一,用于查看当前仓库的状态。它能够告诉你: 当前所在分支 哪些文件被修改但未暂存 哪些文件已暂存但尚未提交 哪些文件未被 Git 跟踪 对于初学…...

【教育研究者的AI外脑】:NotebookLM如何72小时内重构文献综述工作流?

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;【教育研究者的AI外脑】&#xff1a;NotebookLM如何72小时内重构文献综述工作流&#xff1f; 教育研究者长期面临文献爆炸与认知过载的双重压力&#xff1a;平均每位博士生需精读300篇中英文文献&#xff0c;…...

Linux 进程间通信(IPC)详解:终于搞懂管道、消息队列、共享内存到底在干什么

很多人第一次学 Linux 进程间通信&#xff08;IPC&#xff09;时&#xff0c;都会有一种感觉&#xff1a;概念很多 API 很杂 学完还是不知道到底什么时候该用什么最容易出现的问题是&#xff1a;管道和消息队列有什么区别&#xff1f;为什么共享内存最快&#xff1f;信号量到底…...

高层次综合设计算法-常见问题记录(一)

一、算法设计思考的重点 1.定点化的陷阱 整数部分数据位宽不足造成的溢出&#xff1b; 舍入导致图像的视觉差异&#xff1b; 小数部分位宽不足导致精度不够&#xff0c;或者效果不佳&#xff1b;2.pipelin流水线的设计 普通变量造成的数据依赖问题&#xff0c;导致II达不到&…...