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

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

CrazyPanda发表于:2024-01-20 23:33:24浏览:299次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在Linux中进行脚本编写和执行
如何使用Python在Linux中进行脚本编写和执行在Linux操作系统中,我们可以使用Python编写并执行各种脚本。Python是一种简洁而强大的编程语言,它提供了丰富的库和工具,使得脚本编写变得更加简单和高效。下面我们将介绍在Linux中如何使用Python进行脚本编写和执行的基本步骤,同时提供一些具体的代码示例来帮助你更好地理解和运用。安装Python首先,你需要在Linux中安装Python。大部分Linux发行版中已经预装了Python,你可以通过命令行输入以下命令来检查是否已经安装
发表于:2024-01-19 浏览:277 TAG:
【Python】Python中的装饰器和上下文管理器的原理和使用场景是什么?
Python中的装饰器和上下文管理器是两个非常有用的特性,它们可以帮助我们更好地组织和管理代码,并提高代码的可复用性。本文将分别介绍装饰器和上下文管理器的原理和使用场景,并给出具体的代码示例。一、装饰器的原理和使用场景原理:装饰器是一种在不改变原函数定义的情况下,为函数添加额外功能的方式。它实际上是一个函数,接受被装饰的函数作为输入,并返回包装后的函数。装饰器通过在被装饰函数的前后添加代码,来实现一些额外的功能,比如日志记录、性能分析、权限控制等。使用场景:装饰器适用于以下场景:日志记录:通过在
发表于:2024-01-21 浏览:362 TAG:
【Python】学习如何有效使用matplotlib绘图来提高效率
提高效率!掌握matplotlib画图技巧与窍门引言:在数据分析和可视化的过程中,matplotlib是一个重要的工具。它提供了丰富的绘图函数和灵活的参数设置,但有时候我们可能会在使用matplotlib时遇到一些困难,导致效率低下。本文将介绍一些matplotlib的画图技巧和窍门,帮助我们更加高效地进行数据可视化。一、优化图形显示对于大型数据集的可视化,绘制出的图形可能比较拥挤,不容易观察。以下几种方法可以让我们更好地展示数据。1.使用子图:使用子图可以将图形分为多个小区域展示,每个区域显示
发表于:2024-01-12 浏览:330 TAG:
【Python】如何用Python编写SVM算法
如何用Python编写SVM算法?SVM(Support Vector Machine)是一种常用的分类和回归算法,基于统计学习理论和结构风险最小化原理。它具有较高的准确性和泛化能力,并且适用于各种数据类型。在本篇文章中,我们将详细介绍如何使用Python编写SVM算法,并提供具体的代码示例。安装Python和相关库在开始编写SVM算法之前,首先需要确保已经安装了Python和相关的机器学习库。推荐使用Anaconda作为Python的集成开发环境,它不仅自带了Python解释器,还包括了很多常
发表于:2024-01-16 浏览:277 TAG:
【Python】深入探究Python中len函数的工作原理和用法
解析Python中的len函数:探索其背后的原理和用法在Python编程语言中,len函数是一种常用的内置函数,用于获取序列对象的长度或元素个数。本文将深入探讨len函数背后的原理和用法,并提供具体的代码示例。一、len函数的原理len函数的原理非常简单,它会返回传入序列对象的元素个数。这里的序列对象可以是字符串、列表、元组、集合等。实际上,len函数是通过调用序列对象的__len__方法来实现的。__len__方法是Python内置类型(如str、list、tuple、set等)的一个特殊方法
发表于:2024-01-15 浏览:303 TAG:
【Python】SQLAlchemy继承与外部调用
在Python中,使用SQLAlchemy进行数据库操作时,经常会遇到需要继承基类以扩展模型或在不同模块之间共享数据库模型的情况。下面是一些关于如何在SQLAlchemy中实现继承以及如何在模块之间共享和调用数据库模型的基本方法。
发表于:2025-04-23 浏览:11 TAG: #Python #SQLAlchemy
【Python】学习使用matplotlib绘制不同类型图表的示例
使用Matplotlib绘制各类图表的实例学习引言:在数据分析和数据可视化领域,Matplotlib是一个非常强大的Python库。它提供了各种类型的图表和绘图功能,可以帮助我们更好地理解和呈现数据。本文将通过实例学习如何使用Matplotlib绘制各类图表,并提供相应的代码示例。一、折线图(Line Plot):折线图是一种常见的数据可视化方式,用于显示随时间或其他连续变量的数据趋势。下面是一个绘制折线图的简单示例:import matplotlib.pyplot as&n
发表于:2024-01-11 浏览:329 TAG:
【Python】如何使用Python中的字符串操作函数处理大规模文本数据
如何使用Python中的字符串操作函数处理大规模文本数据,需要具体代码示例随着互联网的快速发展和数据的不断增加,大规模文本数据处理成了现代科技中的一个重要课题。Python作为一门简单易学且功能强大的编程语言,提供了丰富的字符串操作函数,能够很好地处理大规模文本数据。本文将介绍一些常用的字符串操作函数,并给出具体的代码示例,以帮助读者更好地掌握如何处理大规模文本数据。切割字符串在处理大规模文本数据时,常常需要将长字符串切割成小段文字进行操作。Python提供了split()函数,可以通过指定分隔
发表于:2024-01-23 浏览:313 TAG:
【Python】python必背入门代码
Python是一种简单易学的编程语言,适合初学者入门。下面是一些必备的Python入门代码,帮助你快速上手编程:1、输出Hello Worldprint("Hello World!")登录后复制2、变量和数据类型# 定义变量并赋值 name = "Alice" age = 18 height = 1.65 is_student = True # 打
发表于:2024-01-24 浏览:345 TAG:
【Python】第六章 异步爬虫
目录1. 协程的基本原理安装使用阻塞非阻塞同步异步多进程协程1.1 案例引入1.2 基础知识1.3 协程的用法1.4 定义协程1.5 绑定回调1.6 多任务协程1.7 协程实现1.8 使用aiohttp2. aiohttp的使用表单提交JSON数据提交2.1 基本介绍2.2 基本实例2.3 URL参数设置2.4 其他请求类型2.5 POST请求2.6 响应2.7 超时设置2.8 并发限制3. aiohttp异步爬取实战实现合并在main方法中将详情页的ID获取出来爬取详情页main方法增加对sc
发表于:2023-12-03 浏览:664 TAG: