Python加密与解密算法
- 格式:docx
- 大小:37.76 KB
- 文档页数:7
Python加密与解密算法
Python是一种高级编程语言,拥有广泛的应用领域,包括数据分析、Web开发和网络安全等。在网络安全领域中,加密与解密算法起到至关重要的作用。本文将介绍Python中常用的加密与解密算法以及它们的应用。
一、对称加密算法
对称加密算法使用相同的密钥来进行加密与解密操作,常见的对称加密算法有DES、3DES(Triple DES)、AES等。在Python中,可以使用cryptography库来实现对称加密算法。
1. DES算法
DES(Data Encryption Standard)是一种对称加密算法,它使用56位的密钥对数据进行加密和解密。Python的cryptography库提供了DES算法的实现方法。
```python
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms,
modes
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import padding
def des_encrypt(key, data):
backend = default_backend() cipher = Cipher(algorithms.TripleDES(key), modes.ECB(),
backend=backend)
encryptor = cipher.encryptor()
padder = padding.PKCS7(64).padder()
padded_data = padder.update(data) + padder.finalize()
ciphertext = encryptor.update(padded_data) + encryptor.finalize()
return ciphertext
def des_decrypt(key, ciphertext):
backend = default_backend()
cipher = Cipher(algorithms.TripleDES(key), modes.ECB(),
backend=backend)
decryptor = cipher.decryptor()
plaintext_padded = decryptor.update(ciphertext) + decryptor.finalize()
unpadder = padding.PKCS7(64).unpadder()
plaintext = unpadder.update(plaintext_padded) + unpadder.finalize()
return plaintext
key = b'0123456789abcdef'
data = b'Hello, World!'
ciphertext = des_encrypt(key, data)
plaintext = des_decrypt(key, ciphertext) print("Cipher text: ", ciphertext)
print("Plain text: ", plaintext)
```
2. AES算法
AES(Advanced Encryption Standard)是一种对称加密算法,它使用128、192或256位的密钥对数据进行加密和解密。在Python中,可以使用cryptography库来实现AES算法。
```python
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms,
modes
from cryptography.hazmat.backends import default_backend
def aes_encrypt(key, data):
backend = default_backend()
cipher = Cipher(algorithms.AES(key), modes.ECB(),
backend=backend)
encryptor = cipher.encryptor()
ciphertext = encryptor.update(data) + encryptor.finalize()
return ciphertext
def aes_decrypt(key, ciphertext):
backend = default_backend() cipher = Cipher(algorithms.AES(key), modes.ECB(),
backend=backend)
decryptor = cipher.decryptor()
plaintext = decryptor.update(ciphertext) + decryptor.finalize()
return plaintext
key = b'0123456789abcdef0123456789abcdef'
data = b'Hello, World!'
ciphertext = aes_encrypt(key, data)
plaintext = aes_decrypt(key, ciphertext)
print("Cipher text: ", ciphertext)
print("Plain text: ", plaintext)
```
二、非对称加密算法
非对称加密算法使用一对密钥,分别是公钥和私钥,公钥用于加密,私钥用于解密。常见的非对称加密算法有RSA、ECC等。在Python中,可以使用cryptography库来实现非对称加密算法。
1. RSA算法
RSA是一种非对称加密算法,它通过生成一对公钥和私钥来实现加密与解密。在Python中,可以使用cryptography库来实现RSA算法。
```python from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.backends import default_backend
def rsa_encrypt(public_key, data):
ciphertext = public_key.encrypt(data,
padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(), label=None))
return ciphertext
def rsa_decrypt(private_key, ciphertext):
plaintext = private_key.decrypt(ciphertext,
padding.OAEP(mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(), label=None))
return plaintext
private_key = rsa.generate_private_key(public_exponent=65537,
key_size=2048, backend=default_backend())
public_key = private_key.public_key()
data = b'Hello, World!'
ciphertext = rsa_encrypt(public_key, data)
plaintext = rsa_decrypt(private_key, ciphertext)
print("Cipher text: ", ciphertext) print("Plain text: ", plaintext)
```
三、散列算法
散列算法,也称为哈希算法,将任意长度的输入转换为固定长度的输出。常见的散列算法有MD5、SHA-1、SHA-256等。在Python中,可以使用hashlib库来实现散列算法。
```python
import hashlib
def md5_hash(data):
m = hashlib.md5()
m.update(data)
return m.hexdigest()
def sha1_hash(data):
m = hashlib.sha1()
m.update(data)
return m.hexdigest()
def sha256_hash(data):
m = hashlib.sha256()
m.update(data) return m.hexdigest()
data = b'Hello, World!'
md5_hash_value = md5_hash(data)
sha1_hash_value = sha1_hash(data)
sha256_hash_value = sha256_hash(data)
print("MD5 hash value: ", md5_hash_value)
print("SHA-1 hash value: ", sha1_hash_value)
print("SHA-256 hash value: ", sha256_hash_value)
```
四、总结
本文介绍了Python中常用的加密与解密算法,包括对称加密算法(如DES和AES)、非对称加密算法(如RSA)以及散列算法(如MD5、SHA-1和SHA-256)。通过使用这些算法,可以保护数据的安全性,防止数据被未授权的用户获取和篡改。在实际应用中,需要根据具体的需求选择合适的算法,并根据相关规范和标准进行实现和配置,以确保数据的机密性和完整性。