在Python中进行加密和解密可以通过加密算法实现,本次攻略中将介绍两种加密算法:AES和RSA。
AES加密和解密
安装依赖库
在Python中进行AES加密和解密需要使用Crypto库,可以通过以下命令安装:
pip install pycrypto
导入库
在Python代码中引入相关依赖库:
from Crypto.Cipher import AES
import base64
import os
加密函数
def aes_encrypt(key, text):
'''
AES加密函数
:param key: 密钥
:param text: 待加密文本
:return: base64编码后的密文
'''
iv = os.urandom(16) # 生成16位随机向量
key = bytes(key, encoding='utf-8')
cipher = AES.new(key, AES.MODE_CBC, iv)
pad = lambda s: s + (16 - len(s) % 16) * chr(16 - len(s) % 16)
# 先进行填充
encrypted_text = cipher.encrypt(pad(text))
# 将加密后的密文和向量使用base64编码后返回
return base64.b64encode(encrypted_text + iv).decode()
解密函数
def aes_decrypt(key, text):
'''
AES解密函数
:param key: 密钥
:param text: 待解密密文
:return: 解密后的文本
'''
# 先进行base64解码
text = base64.b64decode(text.encode())
iv = text[-16:] # 先取出向量
key = bytes(key, encoding='utf-8')
cipher = AES.new(key, AES.MODE_CBC, iv)
# 进行解密并去掉填充的字符
return cipher.decrypt(text[:-16]).decode().rstrip('\0')
示例
key = "this_is_a_secret_key" # 密钥
text = "hello world" # 待加密文本
# 进行加密
encrypted_text = aes_encrypt(key, text)
print('加密后的密文:', encrypted_text)
# 进行解密
decrypted_text = aes_decrypt(key, encrypted_text)
print('解密后的文本:', decrypted_text)
RSA加密和解密
安装依赖库
在Python中进行RSA加密和解密需要使用Crypto库,可以通过以下命令安装:
pip install pycrypto
导入库
在Python代码中引入相关依赖库:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
import base64
密钥生成函数
def generate_key():
'''
RSA密钥生成函数,生成1024位密钥对
:return: 公钥和私钥
'''
key = RSA.generate(1024)
private_key = key.export_key()
public_key = key.publickey().export_key()
return public_key, private_key
加密函数
def rsa_encrypt(public_key, text):
'''
RSA加密函数
:param public_key: 公钥
:param text: 待加密文本
:return: base64编码后的密文
'''
rsa_key = RSA.import_key(public_key)
cipher = PKCS1_v1_5.new(rsa_key)
# 进行加密并返回base64编码的密文
return base64.b64encode(cipher.encrypt(text.encode())).decode()
解密函数
def rsa_decrypt(private_key, text):
'''
RSA解密函数
:param private_key: 私钥
:param text: 待解密密文
:return: 解密后的文本
'''
rsa_key = RSA.import_key(private_key)
cipher = PKCS1_v1_5.new(rsa_key)
# 先进行base64解码
text = base64.b64decode(text.encode())
# 进行解密并返回解密后的文本
return cipher.decrypt(text, None).decode()
示例
# 生成密钥对
public_key, private_key = generate_key()
print('公钥:', public_key)
print('私钥:', private_key)
text = "hello world"
# 进行加密
encrypted_text = rsa_encrypt(public_key, text)
print('加密后的密文:', encrypted_text)
# 进行解密
decrypted_text = rsa_decrypt(private_key, encrypted_text)
print('解密后的文本:', decrypted_text)
以上就是在Python中进行加密和解密的完整攻略,演示了两个例子:AES和RSA加密解密的示例代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Python中进行加密和解密? - Python技术站