使用RSA公钥和私钥实现数据加密通信
import base64
from Crypto import Random
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_v1_5
def get_cipher(key_length):
# 生成伪随机数
r_gen = Random.new().read
# 生成密钥对象实例, 可以指定长度
rsa = RSA.generate(key_length, r_gen)
# 获取私钥
private_key = rsa.export_key()
with open('private.pem', 'wb') as f:
f.write(private_key)
# 获取公钥
public_key = rsa.public_key().export_key()
with open('public.pem', 'wb') as f:
f.write(public_key)
def encrypted_info(public_keu_path, msg):
# 读取公钥文件
key = open(public_keu_path).read()
public_key = RSA.import_key(key)
# 进行加密,加密之前先进行编码
pk = PKCS1_v1_5.new(public_key)
encode_msg = pk.encrypt(msg.encode())
# 加密之后要通过base64编码
cipher_msg = base64.b64encode(encode_msg)
return cipher_msg
def decrypt_info(private_key_path, msg):
# 先进行base64解码
decode_msg = base64.b64decode(msg)
# 获取私钥
key = open(private_key_path).read()
private_key = RSA.import_key(key)
# 进行解密
pk = PKCS1_v1_5.new(private_key)
decrypt_msg = pk.decrypt(decode_msg, 'DecryptError')
# 对解密信息进行解码
return decrypt_msg.decode()
if __name__ == '__main__':
public_key_path = 'public.pem'
private_key_path = 'private.pem'
msg = "你好周杰伦"
encode_msg = encrypted_info(public_key_path, msg)
print(encode_msg)
print("------------------------------------------")
decode_info = decrypt_info(private_key_path, encode_msg)
print(decode_info)
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现