您的当前位置:首页>全部文章>文章详情

【Python】如何在Python中进行数据加密和解密

CrazyPanda发表于:2024-01-20 23:33:24浏览:306次TAG:

如何在Python中进行数据加密和解密,需要具体代码示例

数据加密和解密是信息安全领域中非常重要的概念。在实际应用中,我们经常需要对敏感的数据进行加密保护,以防止未授权的访问和信息泄露。Python是一种功能强大的编程语言,提供了丰富的库和函数来实现数据加密和解密的操作。本文将介绍一些常用的加密算法和在Python中实现数据加密和解密的具体代码示例。

一、MD5加密算法

MD5(Message-Digest Algorithm 5)是一种常用的哈希函数,用于对任意长度的数据进行加密。它可以将任意长度的消息转换为一个128位的数字指纹,以确保数据的完整性和不可篡改性。

在Python中,我们可以使用hashlib库来实现MD5加密算法。以下是一个示例代码:

import hashlib
 
def md5_encrypt(data):
    md5 = hashlib.md5()
    md5.update(data.encode(encoding='utf-8'))
    encrypt_data = md5.hexdigest()
    return encrypt_data
 
# 测试示例
data = 'hello world'
encrypted_data = md5_encrypt(data)
print("加密后的数据:", encrypted_data)

运行结果:

加密后的数据: 5eb63bbbe01eeed093cb22bb8f5acdc3

二、AES加密算法

AES(Advanced Encryption Standard)是一种高级加密标准,广泛应用于各种加密场景。它采用了对称密钥加密的方式,可以对数据进行快速且安全的加密和解密操作。

在Python中,我们可以使用pycryptodome库来实现AES加密算法。以下是一个示例代码:

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
 
def aes_encrypt(data, key):
    cipher = AES.new(key, AES.MODE_EAX)
    nonce = cipher.nonce
    ciphertext, tag = cipher.encrypt_and_digest(data.encode())
    encrypted_data = nonce + ciphertext + tag
    return encrypted_data
 
def aes_decrypt(encrypted_data, key):
    nonce = encrypted_data[:16]
    ciphertext = encrypted_data[16:-16]
    tag = encrypted_data[-16:]
    cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
    data = cipher.decrypt_and_verify(ciphertext, tag)
    return data.decode()
 
# 测试示例
data = 'hello world'
key = get_random_bytes(16)
encrypted_data = aes_encrypt(data, key)
print("加密后的数据:", encrypted_data)
decrypted_data = aes_decrypt(encrypted_data, key)
print("解密后的数据:", decrypted_data)

运行结果:

解密后的数据: hello world

三、RSA加密算法

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,常用于数据的加密和数字签名。它使用两个密钥,公钥用于加密数据,私钥用于解密数据。

在Python中,我们可以使用cryptography库来实现RSA加密算法。以下是一个示例代码:

from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.backends import default_backend
 
def rsa_encrypt(data, public_key):
    public_key = serialization.load_pem_public_key(public_key, backend=default_backend())
    encrypted_data = public_key.encrypt(data.encode(), padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None))
    return encrypted_data
 
def rsa_decrypt(encrypted_data, private_key):
    private_key = serialization.load_pem_private_key(private_key, password=None, backend=default_backend())
    decrypted_data = private_key.decrypt(encrypted_data, padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None))
    return decrypted_data.decode()
 
# 测试示例
data = 'hello world'
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048, backend=default_backend())
private_pem = private_key.private_bytes(encoding=serialization.Encoding.PEM, format=serialization.PrivateFormat.PKCS8, encryption_algorithm=serialization.NoEncryption())
public_key = private_key.public_key()
public_pem = public_key.public_bytes(encoding=serialization.Encoding.PEM, format=serialization.PublicFormat.SubjectPublicKeyInfo)
encrypted_data = rsa_encrypt(data, public_pem)
print("加密后的数据:", encrypted_data)
decrypted_data = rsa_decrypt(encrypted_data, private_pem)
print("解密后的数据:", decrypted_data)

运行结果:

解密后的数据: hello world

通过以上示例代码,我们可以看到如何在Python中使用不同的加密算法对数据进行加密和解密。选择合适的加密算法和密钥长度,并遵循安全的编码实践,这样可以确保数据的机密性和完整性。请注意,本文示例代码仅供参考,实际应用中,还需要考虑密钥管理、数据传输安全等方面的细节。


猜你喜欢

【Python】Python中的队列和栈的实现方式和使用场景有哪些?
Python中的队列和栈的实现方式和使用场景有哪些?队列和栈是数据结构中常用的两种数据类型,它们分别具有不同的特性和使用场景。Python提供了多种实现方式来创建和操作队列(Queue)和栈(Stack)的数据结构。队列的实现方式:1.1 使用列表(List)实现队列:队列的特性通常是“先进先出”,在Python中使用列表可以简单地实现队列的功能。通过append()方法添加元素到列表的末尾,使用pop()方法从列表的开头弹出元素。示例代码如下:queue = [] &nbs
发表于:2024-01-21 浏览:291 TAG:
【Python】深入解析matplotlib安装教程:必须掌握的Python初学者指南
作为一门高级编程语言,Python 在数据可视化中的应用非常广泛,而 matplotlib,作为 Python 中的一个数据可视化库,可以帮助我们轻松地处理图表绘制、数据可视化等问题。在学习 Python 数据可视化过程中,matplotlib 的安装方法是首要问题。以下是一个简单的Python初学者的必备教程,来详细解释一下matplotlib安装的方法。安装matplotlib之前在安装 matplotlib 之前,确保你使用的是 Python 3.x版本,同时在安装前建议先升级pip版本。
发表于:2024-01-17 浏览:341 TAG:
【Python】Pandas数据处理技巧:简单修改列名的方法
Pandas数据处理技巧:简单修改列名的方法在数据处理过程中,有时候我们需要修改DataFrame中的列名,以更好地反映数据的含义或满足特定的需求。Pandas提供了简单易用的方法来修改列名,本文将介绍其中的几种常用方法,并提供具体的代码示例。方法一:使用rename()函数rename()函数可以通过提供一个字典或函数来更改列名。下面是一个使用字典的示例:import pandas as pd   # 创建一个示例DataFrame data&
发表于:2024-01-10 浏览:342 TAG:
【Python】10个常用python标准库
Python的标准库包含了大量的模块和函数,这些模块和函数为Python提供了丰富的功能和工具。以下是10个常用的Python标准库:os模块:提供了许多与操作系统交互的函数,例如访问文件系统、创建文件夹、获取环境变量等。sys模块:提供了与Python解释器交互的函数,例如访问命令行参数、退出程序、获取Python解释器的信息等。re模块:提供了正则表达式相关的函数和类,用于匹配和处理文本数据。json模块:提供了处理JSON格式数据的函数和类,例如将JSON数据解析为Python对象、将Py
发表于:2024-01-24 浏览:353 TAG:
【Python】学习如何有效使用matplotlib绘图来提高效率
提高效率!掌握matplotlib画图技巧与窍门引言:在数据分析和可视化的过程中,matplotlib是一个重要的工具。它提供了丰富的绘图函数和灵活的参数设置,但有时候我们可能会在使用matplotlib时遇到一些困难,导致效率低下。本文将介绍一些matplotlib的画图技巧和窍门,帮助我们更加高效地进行数据可视化。一、优化图形显示对于大型数据集的可视化,绘制出的图形可能比较拥挤,不容易观察。以下几种方法可以让我们更好地展示数据。1.使用子图:使用子图可以将图形分为多个小区域展示,每个区域显示
发表于:2024-01-12 浏览:338 TAG:
【Python】第一章 爬虫基础
目录1. HTTP 基本原理1.4.1 响应状态码1.4.2 响应头1.4.3 响应体1.3.1 请求方法1.3.2 请求的网址1.3.3 请求头1.3.4 请求体1.1 URI 和 URL1.2 HTTP 和 HTTPS1.3 请求1.4 响应2. Web 网页基础2.1.1 HTML2.1.2 CSS2.1.3 JavaScript2.1 网页的组成2.2 网页的结构2.3 节点树及节点间的关系2.4 选择器3. 爬虫的基本原理3.1.1 获取网页3.1.2 提取信息3.1.3 保存数据3.
发表于:2023-12-02 浏览:511 TAG:
【Python】学习matplotlib绘制折线图的基本步骤
Matplotlib是Python中最著名和最常用的数据可视化库之一。掌握Matplotlib绘制折线图的基本步骤对于数据分析工作非常重要。本文将从零开始,为初学者介绍Matplotlib绘制折线图的基本步骤,并提供具体的代码示例。导入matplotlib库要开始使用Matplotlib绘制图形,首先需要导入Matplotlib库。可以使用以下代码导入:import matplotlib.pyplot as plt登录后复制准备数据在准备开始绘制折线图之前,需要先准
发表于:2024-01-17 浏览:301 TAG:
【Python】Python2安装pip的详细指南
简明易懂!Python2安装pip详细教程!引言:Python是一门灵活、强大且广泛应用的编程语言。使用Python进行开发有很多优点,其中之一就是可以使用丰富的第三方库来扩展其功能。而要安装这些第三方库,就需要使用pip,它是Python的包管理工具。本文将详细介绍如何在Python2环境下安装pip,并提供具体的代码示例。步骤一:确认Python环境首先,我们需要确认已经安装了Python环境。打开终端或命令提示符,输入以下命令:python --version登录后复制如果顯示的
发表于:2024-01-18 浏览:313 TAG:
【Python】图形绘制利器——matplotlib安装教程
图形绘制利器——matplotlib安装教程一、简介matplotlib是一个功能强大的Python绘图库,用于生成各种类型的图形,包括折线图、散点图、柱状图、饼图等。它的安装非常简单方便,本文将介绍如何安装matplotlib并给出具体的代码示例。二、安装matplotlib安装Python首先,确保你的电脑已经安装了Python。可以在Python官网(https://www.python.org/downloads/)上下载并安装最新版本的Python。安装pipPip是Python的包管
发表于:2024-01-12 浏览:315 TAG:
【Python】Linux环境中基于Python脚本实现监控网站可用性的技术
Linux环境中基于Python脚本实现监控网站可用性的技术摘要:本文介绍了如何在Linux环境中使用Python脚本来监控网站的可用性。具体包括通过发送HTTP请求和解析响应来检测网站是否可访问,以及如何将该监控脚本配置为定时任务并发送报警邮件。1. 简介随着互联网的发展,网站可用性成为了一个至关重要的指标。如果网站无法正常访问,将会给用户带来巨大不便,甚至会影响到企业的品牌形象和业务运营。因此,及时监控网站的可用性是非常重要的。2. 准备工作为了能够使用Python监控网站可用性,我们首先需
发表于:2024-01-19 浏览:264 TAG: