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 常见加密解密算法的解析及代码案例。

加密和解密算法在实际应用中扮演着重要的角色,掌握这些算法对于程序员和初学者来说是非常有益的。

希望这篇文章能对您有所帮助。

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

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

相关文章

SpringCloudAlibaba之Sentinel介绍

文章目录 1 Sentinel1.1 Sentinel简介1.2 核心概念1.2.1 资源1.2.2 规则 1.3 入门Demo1.3.1 引入依赖1.3.2 集成Spring1.3.3 Spring中资源规则 1.4 Sentinel控制台1.5 核心原理1.5.1 NodeSelectorSlot1.5.2 ClusterBuilderSlot1.5.3 LogSlot1.5.4 StatisticSlot1.5.5 Authority…

机器学习:塑造未来的核心力量

着科技的飞速发展,机器学习已经成为我们生活中不可或缺的一部分。无论是搜索引擎、推荐系统,还是自动驾驶汽车和机器人,都依赖于机器学习算法。本文将探讨机器学习的基本概念、应用领域以及未来发展趋势。 一、机器学习的基本概念 机器学习…

数据结构--5.3图的遍历(广度优先遍历)

广度优先遍历&#xff1a; 广度优先遍历&#xff08;BreadthFirstSearch&#xff09;&#xff0c;又称为广度优先搜索&#xff0c;简称BFS。 要实现对图的广度遍历&#xff0c;我们可以利用队列来实现。 void BFSTraverse(MGraph G) {int i,j;Queue Q;for(i0;i<G.numVerte…

Nacos 开源版的使用测评

文章目录 一、Nacos的使用二、Nacos和Eureka在性能、功能、控制台体验、上下游生态和社区体验的对比&#xff1a;三、记使使用Nacos中容易犯的错误四、对Nacos开源提出的一些需求 一、Nacos的使用 这里配置mysql的连接方式&#xff0c;spring.datasource.platformmysql是老版本…

软件架构设计(三) B/S架构风格-层次架构(一)

层次架构风格从之前的两层C/S到三层C/S,然后演化为三层B/S架构,三层B/S架构之后仍然在往后面演化,我们来看一下层次架构演化过程中都有了哪些演化的架构风格呢? 而我们先简单了解一下之前的层次架构风格中分层的各个层次的作用。 表现层:由于用户进行交互,比如MVC,MVP,…

大数据平台数据安全具体措施有哪些?有推荐的吗?

大数据平台是企业处理和分析数据的重要工具之一&#xff0c;也是企业数据存储的重要载体&#xff0c;因此保障大数据平台安全至关重要。那你知道大数据平台数据安全具体措施有哪些&#xff1f;有推荐的吗&#xff1f; 大数据平台数据安全具体措施有哪些&#xff1f; 1、数据…

伦敦金投资中挂单的优势

在伦敦金交易中&#xff0c;其实挂单具有无可比拟的优势&#xff1f;首先&#xff0c;如果我们不是全职的投资者&#xff0c;我们在交易时间内可能有其他的工作&#xff0c;那么挂单就可以帮助我们捕捉到市场的机会&#xff0c;即便我们不一定会坐在电脑面前&#xff0c;也可以…

Flutter 完美的验证码输入框 转载

刚开始看到这个功能的时候一定觉得so easy&#xff0c;开始的时候我也是这么觉得的&#xff0c;这还不简单&#xff0c;然而真正写的时候才发现并没有想象的那么简单。 先上图&#xff0c;不上图你们都不想看&#xff0c;我难啊&#xff0c;到Github&#xff1a; https://gith…

chatGPT生成代码--go组合算法

提问&#xff1a;用golang写一个组合算法函数zuhe(x,n)&#xff0c;x为组合所需的字符&#xff0c;n 为组合后的字符串长度&#xff0c;例如 x"ab", n2 结果返回 aa,ab,bb,ba 结果&#xff1a;下面是一个用Go编写的生成长度为n的字符串组合的函数 zuhe&#xff0c;其…

如何通过实际操作来加深对Linux命令和概念的理解?

作为一个新手&#xff0c;你一定不要被Linux那堆命令吓到。其实&#xff0c;它们就像你的“超能力”&#xff0c;只要你掌握它们&#xff0c;你就能成为Linux世界的超级英雄&#xff01; 首先&#xff0c;我们要了解的是&#xff0c;Linux命令其实就像你的“魔法咒语”&#x…

C语言:选择+编程(每日一练Day15)

目录 选择题&#xff1a; 题一&#xff1a; 题二&#xff1a; 题三&#xff1a; 题四&#xff1a; 题五&#xff1a; 编程题&#xff1a; 题一&#xff1a;寻找奇数 思路一&#xff1a; 题二&#xff1a;寻找峰值 思路一&#xff1a; 本人实力有限可能对一些地方解…

java八股文面试[数据库]——B树和B+树的区别

B树是一种树状数据结构&#xff0c;它能够存储数据、对其进行排序并允许以O(logn)的时间复杂度进行查找、顺序读取、插入和删除等操作。 1、B树的特性 B树中允许一个结点中包含多个key&#xff0c;可以是3个、4个、5个甚至更多&#xff0c;并不确定&#xff0c;需要看具体的实…

vscode中使用eslint+prettier的配置

eslintprettiervscode自动保存用起来感觉非常爽快。 一般来说&#xff0c;安装eslintprettier插件&#xff0c;然后使用相关脚手架配套的eslintprettier&#xff0c;无法自动格式代码&#xff0c;每次都需要执行格式化命令。这里贴出保存自动格式化代码的setting.json。 // .…

svn checkout 报 ‘svn: E000061: 执行上下文错误: Connection refused‘

问题 svn: E170013svn: E000061 ➜ svn svn checkout https://xxx.xxx.xxx.xxx:9443/svn/project-xxx/ svn: E170013: Unable to connect to a repository at URL https://xxx.xxx.xxx.xxx:9443/svn/project-xxx svn: E000061: 执行上下文错误: Connection refused链接在浏览…

详细说明OSPF常见的LSA

目录 1类LSA &#xff08;Router LSA&#xff09;介绍 总结&#xff1a;1类LSA 2类LSA &#xff08;Network LSA&#xff09;介绍 总结&#xff1a;2类LSA 3类LSA &#xff08;Summary LSA&#xff09;介绍 总结&#xff1a;3类LSA 5类LSA &#xff08;ase LSA&…

ARP欺骗

ARP欺骗定义 ARP欺骗&#xff08;英语&#xff1a;ARP spoofing&#xff09;&#xff0c;又称ARP毒化&#xff08;ARP poisoning&#xff0c;网络上多译为ARP病毒&#xff09;或ARP攻击&#xff0c;是针对以太网地址解析协议&#xff08;ARP&#xff09;的一种攻击技术&#x…

索引简单概述(SQL)

一、什么是索引&#xff1f; 索引是一种特殊的文件&#xff08;InnoDB数据表上的索引是表空间的一个组成部分&#xff09;&#xff0c;他们包含着对数据表里所有记录的引用指针。 索引是一种数据结构。数据库索引&#xff0c;是数据库管理系统中一个排序的数据结构&#xff0…

OceanBase 里的 schema 是什么?

李博洋 OceanBase 技术部研发工程师。 OceanBase 开源社区里经常会看到一些类似于 “ schema 是什么” 的疑问&#xff1a; 很多同学经常会误以为在 OceanBase 里&#xff0c;schema 只是 database 的同义词&#xff0c;这次分享就从 schema 是什么这个问题稍微展开聊一下。 首…

3月面试华为被刷,准备半年,9月二战华为终于上岸,要个27K不过分吧?

终于二战上岸了&#xff0c;二战华为也并不是说非华为不可&#xff0c;只是觉得心里憋着一口气&#xff0c;这就导致我当时有其他比较好的offer&#xff0c;我也没有去&#xff0c;就是想上岸华为来证明自己,现在也算是如愿了&#xff0c;来跟大伙们分享一下~ 个人情况 我本人…

【STM32】IIC使用中DMA传输时 发送数据总少一个的问题

问题描述 在使用STM32 I2C数据发送过程中&#xff0c;发现每轮实际发送出去的数据总比在DMA配置中设定的传输数据个数要少一个。比方说&#xff1a;DMA配置里设定的传输数据个数是10个&#xff0c;结果发现在总线上只能发出9个&#xff0c;经过进一步发现是少了最后一个数据。…