legongju.com
我们一直在努力
2024-12-24 22:12 | 星期二

Python加密与解密如何实现

在Python中,加密和解密可以通过多种方式实现。这里我将向您展示如何使用cryptography库进行简单的加密和解密操作。cryptography库是一个功能强大的加密库,支持对称加密和非对称加密算法。

首先,确保您已经安装了cryptography库。如果没有,请使用以下命令安装:

pip install cryptography

接下来,我们将使用Fernet对称加密算法进行加密和解密。以下是示例代码:

from cryptography.fernet import Fernet

# 生成密钥
def generate_key():
    return Fernet.generate_key()

# 加密
def encrypt(message, key):
    f = Fernet(key)
    encrypted_message = f.encrypt(message.encode())
    return encrypted_message

# 解密
def decrypt(encrypted_message, key):
    f = Fernet(key)
    decrypted_message = f.decrypt(encrypted_message).decode()
    return decrypted_message

# 示例
key = generate_key()
message = "Hello, World!"

encrypted_message = encrypt(message, key)
print("Encrypted message:", encrypted_message)

decrypted_message = decrypt(encrypted_message, key)
print("Decrypted message:", decrypted_message)

在这个示例中,我们首先生成一个密钥,然后使用该密钥对消息进行加密和解密。请注意,密钥在加密和解密过程中必须保持一致。

除了对称加密,您还可以使用非对称加密算法,如RSA。以下是使用RSA进行加密和解密的示例代码:

from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes

# 生成RSA密钥对
def generate_rsa_key_pair():
    private_key = rsa.generate_private_key(
        public_exponent=65537,
        key_size=2048,
    )
    public_key = private_key.public_key()
    return private_key, public_key

# 加密
def encrypt_rsa(message, public_key):
    encrypted_message = public_key.encrypt(
        message.encode(),
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA256()),
            algorithm=hashes.SHA256(),
            label=None,
        )
    )
    return encrypted_message

# 解密
def decrypt_rsa(encrypted_message, private_key):
    decrypted_message = private_key.decrypt(
        encrypted_message,
        padding.OAEP(
            mgf=padding.MGF1(algorithm=hashes.SHA256()),
            algorithm=hashes.SHA256(),
            label=None,
        )
    )
    return decrypted_message.decode()

# 示例
private_key, public_key = generate_rsa_key_pair()
message = "Hello, World!"

encrypted_message = encrypt_rsa(message, public_key)
print("Encrypted message:", encrypted_message)

decrypted_message = decrypt_rsa(encrypted_message, private_key)
print("Decrypted message:", decrypted_message)

在这个示例中,我们首先生成一个RSA密钥对,然后使用公钥进行加密,私钥进行解密。请注意,RSA加密通常用于加密较小的数据,因为加密较大的数据可能会导致性能下降。对于大文件加密,通常建议使用对称加密算法,然后使用RSA加密对称密钥。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/18386.html

相关推荐

  • python交互命令窗口能进行哪些机器学习任务

    python交互命令窗口能进行哪些机器学习任务

    Python交互命令窗口可以执行多种机器学习任务,从基本的统计计算到复杂的模型训练和评估。以下是一些可以在Python交互命令窗口中进行的机器学习任务示例: 基本概...

  • python交互命令窗口如何导入外部模块

    python交互命令窗口如何导入外部模块

    在Python交互命令窗口中,要导入外部模块,您需要首先确保该模块已经安装在您的Python环境中。安装完成后,您可以使用import关键字来导入所需的模块。以下是一些...

  • python交互命令窗口有何可视化工具

    python交互命令窗口有何可视化工具

    在Python交互命令窗口中,有多种可视化工具可以帮助你更好地展示和分析数据。以下是一些常用的Python可视化工具: Dash:一个用于构建分析型Web应用程序的库,基...

  • python交互命令窗口怎样进行单元测试

    python交互命令窗口怎样进行单元测试

    在Python交互命令窗口中进行单元测试,可以使用内置的unittest模块。以下是一些基本步骤: 首先,导入unittest模块: import unittest 创建一个测试类,该类继承...

  • Go语言互斥锁有啥替代方案

    Go语言互斥锁有啥替代方案

    在Go语言中,互斥锁(Mutex)是一种用于保护共享资源的同步原语。然而,在某些场景下,互斥锁可能不是最佳选择。以下是一些常见的替代方案: 原子操作(Atomic O...

  • Go语言互斥锁怎样优化代码

    Go语言互斥锁怎样优化代码

    在Go语言中,互斥锁(Mutex)是一种用于保护共享资源的同步原语。为了优化使用互斥锁的代码,可以遵循以下几点建议: 减少锁的持有时间:尽量缩短锁保护的代码块...

  • Go语言互斥锁使用复杂吗

    Go语言互斥锁使用复杂吗

    Go语言的互斥锁(Mutex)使用起来相对简单。互斥锁是一种同步原语,用于在并发编程中保护共享资源免受多个goroutine的访问。Go语言的sync包提供了互斥锁的实现。...

  • Go语言互斥锁性能影响大吗

    Go语言互斥锁性能影响大吗

    Go语言互斥锁对性能的影响取决于使用场景和锁的粒度。在写操作频繁的场景下,互斥锁可能会导致性能瓶颈,因为它会阻塞其他goroutine的访问。而在读操作远多于写操...