Python实现安全的通信模型

实验要求

实验目的

设计并编程实现一个通信模型,要求实现保密性、完整性、身份鉴别。

实验要求

  1. 编写一个发送端程序和一个接收端程序,接收端完成对消息的验证和解密。
  2. 用DES的ECB模式完成对信件内容的加密。
  3. 用RSA对上面的对称密钥进行加密,实现会话密钥交换
    要求:大素数p、q至少均大于10^10
  4. 添加消息认证码:保证信件数据的完整性(散列函数:SHA-1)
  5. 对消息认证码用RSA进行数字签名
    要求:大素数p、q至少均大于1010

代码

Send.py

import socket
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
import Crypto.Hash.SHA512
from Crypto.Hash import SHA
import base64
from pyDes import *
import rsa
import binascii

# DES加密:
KEY_ODES = b'\x57\x69\x6C\x6C\x69\x61\x6D\x53'
# KEY_DES=bytes(int(KEY_ODES))
def des_encrypt(message):
    k = des(KEY_ODES, ECB, None, None, PAD_PKCS5)
    Encrypt_des = k.encrypt(message)
    return binascii.b2a_hex(Encrypt_des)

#RSA加密
# 用公钥加密,并用Base64编码后输出
def rsa_encrypt(deskey,pubkey):
    crypto = rsa.encrypt(deskey, pubkey)
    rsa_deskey = base64.b64encode(crypto)
    return rsa_deskey

# 签名
# plaintext:string,被签名信息
# keyPath:私钥路径
# 返回:base64的签名输出
def rsa_sign(plaintext, keyPath):
    # 读私钥
    with open(keyPath) as f:
        key_rsa = f.read()
    # 实例验名对象
    signer = PKCS1_v1_5.new(RSA.importKey(key_rsa))
    # 将被签名信息以SHA算法进行哈希转换
    hash_value = SHA.new(plaintext.encode('utf-8'))
    # 签名
    sign 
  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值