Python 数据加密与解密:保护你的敏感信息安全

引言

随着现代科技的发展,我们在网络上存储和传输的敏感信息越来越多。为了防止这些信息被黑客窃取或泄露,我们需要对其进行加密。Python 是一种功能强大的编程语言,提供了多种加密算法,可以帮助我们保护敏感信息的安全。本文将介绍 Python 中的数据加密和解密方法,帮助你保护你的信息安全。

数据加密

在 Python 中,我们可以使用多种加密算法来加密数据,包括对称加密和非对称加密。下面将介绍几种常用的加密算法。

对称加密

对称加密算法是一种加密方法,使用相同的密钥加密和解密数据。这种加密方法的优点是速度快,适用于大量数据的加密。Python 中常用的对称加密算法有:

import hashlib
import os
from cryptography.fernet import Fernet

def generate_key():
    """
    生成密钥
    """
    key = Fernet.generate_key()
    with open("secret.key", "wb") as key_file:
        key_file.write(key)

def load_key():
    """
    加载密钥
    """
    return open("secret.key", "rb").read()

def encrypt_data(data):
    """
    使用 Fernet 加密数据
    """
    key = load_key()
    fernet = Fernet(key)
    encrypted = fernet.encrypt(data.encode())
    return encrypted

def decrypt_data(encrypted_data):
    """
    使用 Fernet 解密数据
    """
    key = load_key()
    fernet = Fernet(key)
    decrypted = fernet.decrypt(encrypted_data).decode()
    return decrypted

if __name__ == "__main__":
    generate_key()
    data = "Hello, World!"
    encrypted = encrypt_data(data)
    decrypted = decrypt_data(encrypted)
    print(f"原始数据:{data}")
    print(f"加密后的数据:{encrypted}")
    print(f"解密后的数据:{decrypted}")

在这个示例中,我们使用了 Fernet 算法进行对称加密。首先,我们需要生成一个密钥,然后使用密钥初始化 Fernet 对象。我们可以使用 Fernet 对象的 encrypt 方法对数据进行加密,使用 decrypt 方法对数据进行解密。

非对称加密

非对称加密算法使用一对密钥(公钥和私钥)来加密和解密数据。公钥可以给任何人使用,用于加密数据。私钥只有拥有者可以使用,用于解密数据。Python 中常用的非对称加密算法有:

import hashlib
import os
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

def generate_key_pair():
    """
    生成公钥和私钥
    """
    key = RSA.generate(2048)
    private_key = key.export_key()
    public_key = key.publickey().export_key()
    with open("private.key", "wb") as private_key_file:
        private_key_file.write(private_key)
    with open("public.key", "wb") as public_key_file:
        public_key_file.write(public_key)

def load_private_key():
    """
    加载私钥
    """
    return RSA.import_key(open("private.key", "rb").read())

def load_public_key():
    """
    加载公钥
    """
    return RSA.import_key(open("public.key", "rb").read())

def encrypt_data(data):
    """
    使用公钥加密数据
    """
    public_key = load_public_key()
    cipher = PKCS1_OAEP.new(public_key)
    encrypted = cipher.encrypt(data.encode())
    return encrypted

def decrypt_data(encrypted_data):
    """
    使用私钥解密数据
    """
    private_key = load_private_key()
    cipher = PKCS1_OAEP.new(private_key)
    decrypted = cipher.decrypt(encrypted_data).decode()
    return decrypted

if __name__ == "__main__":
    generate_key_pair()
    data = "Hello, World!"
    encrypted = encrypt_data(data)
    decrypted = decrypt_data(encrypted)
    print(f"原始数据:{data}")
    print(f"加密后的数据:{encrypted}")
    print(f"解密后的数据:{decrypted}")

在这个示例中,我们使用了 RSA 算法进行非对称加密。我们首先需要生成一对公钥和私钥,然后使用公钥初始化 PKCS1_OAEP 对象进行加密,使用私钥初始化 PKCS1_OAEP 对象进行解密。

数据解密

进行数据解密时,我们需要使用相同的密钥或密钥对来解密数据。下面将介绍如何在 Python 中进行数据解密。

对称解密

对称解密算法使用相同的密钥来加密和解密数据。我们可以使用相同的密钥来解密数据。

import hashlib
import os
from cryptography.fernet import Fernet

def load_key():
    """
    加载密钥
    """
    return open("secret.key", "rb").read()

def decrypt_data(encrypted_data):
    """
    使用 Fernet 解密数据
    """
    key = load_key()
    fernet = Fernet(key)
    decrypted = fernet.decrypt(encrypted_data).decode()
    return decrypted

if __name__ == "__main__":
    data = "Hello, World!"
    key = Fernet.generate_key()
    fernet = Fernet(key)
    encrypted = fernet.encrypt(data.encode())
    decrypted = decrypt_data(encrypted)
    print(f"原始数据:{data}")
    print(f"加密后的数据:{encrypted}")
    print(f"解密后的数据:{decrypted}")

在这个示例中,我们使用了 Fernet 算法进行对称加密和解密。我们首先生成一个密钥,然后使用密钥初始化 Fernet 对象,使用 encrypt 方法加密数据,使用 decrypt 方法解密数据。

非对称解密

非对称解密算法使用一对密钥(公钥和私钥)来加密和解密数据。我们需要使用私钥来解密数据。

Python 数据加密与解密:保护你的敏感信息安全

import hashlib
import os
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP

def load_private_key():
    """
    加载私钥
    """
    return RSA.import_key(open("private.key", "rb").read())

def decrypt_data(encrypted_data):
    """
    使用私钥解密数据
    """
    private_key = load_private_key()
    cipher = PKCS1_OAEP.new(private_key)
    decrypted = cipher.decrypt(encrypted_data).decode()
    return decrypted

if __name__ == "__main__":
    data = "Hello, World!"
    key = RSA.generate(2048)
    private_key = key.export_key()
    public_key = key.publickey().export_key()
    with open("private.key", "wb") as private_key_file:
        private_key_file.write(private_key)
    with open("public.key", "wb") as public_key_file:
        public_key_file.write(public_key)
    public_key = RSA.import_key(open("public.key", "rb").read())
    cipher = PKCS1_OAEP.new(public_key)
    encrypted = cipher.encrypt(data.encode())
    decrypted = decrypt_data(encrypted)
    print(f"原始数据:{data}")
    print(f"加密后的数据:{encrypted}")
    print(f"解密后的数据:{decrypted}")

在这个示例中,我们使用了 RSA 算法进行非对称加密和解密。我们首先需要生成一对公钥和私钥,然后使用公钥初始化 PKCS1_OAEP 对象进行加密,使用私钥初始化 PKCS1_OAEP 对象进行解密。

结论

在本文中,我们介绍了 Python 中数据加密和解密的方法。我们介绍了对称加密和非对称加密算法,并提供了示例代码。通过这些方法,我们可以保护存储和传输的敏感信息的安全。在实际应用中,我们需要根据具体情况选择合适的加密算法,并保护好密钥或密钥对。这样才能确保我们的信息安全。

最后编辑于:2024/01/09作者: 心语漫舞