当前位置: 首页> 黑客网> 正文

数据加密的Python实现

对称加密

对称加密使用相同的密钥进行加密和解密。常见的对称加密算法包括AES(Advanced Encryption Standard)和DES(Data Encryption Standard)。

使用AES进行加密

数据加密的Python实现

我们可以使用`cryptography`库来实现AES加密。首先需要安装这个库:

```bash

pip install cryptography

```

然后,你可以使用以下代码进行AES加密:

```python

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes

from cryptography.hazmat.backends import default_backend

import base64

def encrypt_data(data, key):

backend = default_backend()

cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=backend)

encryptor = cipher.encryptor()

ciphertext = encryptor.update(data) + encryptor.finalize()

return base64.b64encode(ciphertext)

def decrypt_data(encrypted_data, key):

backend = default_backend()

cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=backend)

decryptor = cipher.decryptor()

ciphertext = base64.b64decode(encrypted_data)

plaintext = decryptor.update(ciphertext) + decryptor.finalize()

return plaintext

示例

key = b'This is a secret key'

data = b'This is some sensitive data'

encrypted_data = encrypt_data(data, key)

print("Encrypted:", encrypted_data)

decrypted_data = decrypt_data(encrypted_data, key)

print("Decrypted:", decrypted_data)

```

非对称加密

非对称加密使用一对密钥:公钥用于加密,私钥用于解密。常见的非对称加密算法包括RSA。

使用RSA进行加密

我们可以使用`cryptography`库来实现RSA加密。以下是一个示例:

```python

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

from cryptography.hazmat.primitives import serialization, hashes

import base64

def generate_rsa_keys():

private_key = rsa.generate_private_key(

public_exponent=65537,

key_size=2048,

backend=default_backend()

)

public_key = private_key.public_key()

return private_key, public_key

def encrypt_with_rsa(data, public_key):

ciphertext = public_key.encrypt(

data,

padding.OAEP(

mgf=padding.MGF1(algorithm=hashes.SHA256()),

algorithm=hashes.SHA256(),

label=None

)

)

return base64.b64encode(ciphertext)

def decrypt_with_rsa(encrypted_data, private_key):

ciphertext = base64.b64decode(encrypted_data)

plaintext = private_key.decrypt(

ciphertext,

padding.OAEP(

mgf=padding.MGF1(algorithm=hashes.SHA256()),

algorithm=hashes.SHA256(),

label=None

)

)

return plaintext

示例

private_key, public_key = generate_rsa_keys()

data = b'This is some sensitive data'

encrypted_data = encrypt_with_rsa(data, public_key)

print("Encrypted:", encrypted_data)

decrypted_data = decrypt_with_rsa(encrypted_data, private_key)

print("Decrypted:", decrypted_data)

```

请注意,以上代码示例仅用于演示目的。在实际应用中,你需要确保密钥的安全性,并且根据具体需求选择合适的加密算法和模式。