Python玩转加密的技巧【推荐】攻略
一、背景介绍
在互联网时代,数据安全越来越受到重视。加密技术成为了信息安全领域的一项重要技术,Python作为一种功能强大的编程语言,在加密领域也有很高的应用价值。本攻略旨在让读者了解Python下的加密技术并提供一些实用的示例。
二、加密算法介绍
1. 对称加密
在对称加密算法中,加密和解密密钥是相同的。其中最知名的对称加密算法是AES算法。Python下的pycryptodome
库提供了对称加密算法的实现。
下面给出一个将明文加密后再解密的示例代码:
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
# 定义密钥和明文
key = get_random_bytes(16) # 获取长度为16的随机字节作为密钥
plaintext = b'Hello World!'
# 定义需要加密的内容长度为16的倍数
BS = AES.block_size
pad = lambda s: s + (BS - len(s) % BS) * bytes([BS - len(s) % BS])
plaintext = pad(plaintext)
# 加密
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(plaintext)
print(ciphertext)
# 解密
cipher = AES.new(key, AES.MODE_EAX, nonce=cipher.nonce)
plaintext = cipher.decrypt_and_verify(ciphertext, tag)
print(plaintext)
2. 非对称加密
在非对称加密算法中,加密密钥和解密密钥不同。其中最知名的非对称加密算法是RSA算法。Python下的cryptography
库提供了非对称加密算法的实现。
下面给出一个使用RSA算法实现的文件加密和解密的示例代码:
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.backends import default_backend
import os
# 生成RSA密钥对
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)
public_key = private_key.public_key()
def encrypt_file(filename):
# 读取文件内容
with open(filename, 'rb') as f:
plaintext = f.read()
# 使用RSA公钥加密
ciphertext = public_key.encrypt(
plaintext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 将加密后的内容写入文件
with open(filename+'.enc', 'wb') as f:
f.write(ciphertext)
def decrypt_file(filename):
# 读取加密文件内容
with open(filename, 'rb') as f:
ciphertext = f.read()
# 使用RSA私钥解密
plaintext = private_key.decrypt(
ciphertext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# 将解密后的内容写入文件
with open(os.path.splitext(filename)[0], 'wb') as f:
f.write(plaintext)
# 示例:加密文件
encrypt_file('example.txt')
# 示例:解密文件
decrypt_file('example.txt.enc')
三、总结
本攻略介绍了Python下的两种加密算法:对称加密和非对称加密。对称加密算法以AES算法为例进行了实现,非对称加密算法以RSA算法为例进行了文件加密和解密。读者可以根据需要,选择合适的算法进行实现和应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python玩转加密的技巧【推荐】 - Python技术站