📜  文件加密(1)

📅  最后修改于: 2023-12-03 15:10:23.465000             🧑  作者: Mango

文件加密

文件加密是指对文件进行保护,防止未被授权的人员访问和修改文件内容。文件加密可以用于保护个人隐私、商业机密等敏感信息。下面介绍几种常见的文件加密方法。

对称加密

对称加密是一种传统加密方法,它使用相同的密钥进行加密和解密。这意味着在加密和解密过程中,都需要使用同一个密钥。常用的对称加密算法有AES和DES。AES是一种高级加密标准,比DES更安全。

以下是一个AES加密和解密的示例代码片段:

from Crypto.Cipher import AES

# 加密
def encrypt(key, plaintext):
    cipher = AES.new(key, AES.MODE_EAX)
    ciphertext, tag = cipher.encrypt_and_digest(plaintext)
    return (cipher.nonce, tag, ciphertext)

# 解密
def decrypt(key, nonce, tag, ciphertext):
    cipher = AES.new(key, AES.MODE_EAX, nonce=nonce)
    plaintext = cipher.decrypt(ciphertext)
    try:
        cipher.verify(tag)
    except ValueError:
        print("密文被篡改")
    return plaintext
非对称加密

非对称加密使用一对公钥和私钥进行加密和解密。公钥可以公开发布,任何人都可以使用它进行加密,但只有持有私钥的人才能解密。常用的非对称加密算法有RSA和ECC。

以下是一个使用RSA加密和解密的示例代码片段:

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

# 加密
def encrypt(message, public_key):
    encryptor = PKCS1_OAEP.new(public_key)
    ciphertext = encryptor.encrypt(message)
    return ciphertext

# 解密
def decrypt(ciphertext, private_key):
    decryptor = PKCS1_OAEP.new(private_key)
    message = decryptor.decrypt(ciphertext)
    return message
哈希算法

哈希算法是一种将任意长度的数据映射为固定长度的数据的算法。通过哈希算法生成的哈希值可以用于数据的完整性验证和数字签名。常用的哈希算法有MD5和SHA。

以下是一个使用SHA1生成哈希值的示例代码片段:

import hashlib

# 生成SHA1哈希值
def sha1_hash(message):
    hasher = hashlib.sha1()
    hasher.update(message)
    return hasher.hexdigest()
数字签名

数字签名是一种保证信息真实性的技术。在数字签名过程中,使用私钥对信息的哈希值进行签名,使用公钥对签名进行验证。常用的数字签名算法有RSA和ECC。

以下是一个使用RSA数字签名的示例代码片段:

from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256

# 签名
def sign(message, private_key):
    h = SHA256.new(message.encode('utf-8'))
    signature = pkcs1_15.new(private_key).sign(h)
    return signature

# 验证签名
def verify(message, signature, public_key):
    h = SHA256.new(message.encode('utf-8'))
    try:
        pkcs1_15.new(public_key).verify(h, signature)
        return True
    except:
        return False
总结

文件加密是信息安全的重要组成部分。不同的加密方法有不同的特点和用途。在进行文件加密时,应根据具体需求选择合适的加密方法。