东华大学信息安全专业,大三(下),系统安全课程设计实验
实验五 安全数据传输实验
一、实验目的
掌握对称密码和公钥密码体制的原理,通过综合使用两种加解密方式,了解两种加解密方式的异同点及认证方式。
二、实验场景
飞机和航空站之间需要交换数据。在飞机起飞前,从航空站接收加密后的数据(例如,作战指令、作战地图等)。在飞机结束飞行后,需要将更新后的数据通过加密方式反馈给(例如,飞机航行路线、搜索区域等)航空站。
三、实验原理
1.采用对称密码用于加解密双方交换的数据。
2.采用公钥密码用于传递对称密码的密钥。
四、实验要求
请设计一个方案用于飞机和航空站可以传递安全数据(两人为一组)。
任务1:请根据上述原理给出飞机和航空站交互数据的加解密示意图。
任务2:在任务1中,飞机和航空站的加解密方式仅能保证数据的机密性。请设计一个方案用于实现飞机和航空站之间的身份互相认证及数据完整性,说明原理并给出示意图。
任务3:编程实现任务1和2,请给出每个中间过程的关键数据及源代码。
对称密码算法采用 GIFT-128, 公钥密码算法采用RSA。
消息为0123 4567 89AB CDEF 0123 4567 89AB CDEF(16进制)
Midori密钥为 1111 1111 1111 1111 1111 1111 1111 1111 (16进制)
RSA 算法的公私钥自定。
实验报告以及源码参考:
点击进行资源下载
资料为本人亲手码字,不存在作业抄袭风险(除非你直接 Ctrl C + Ctrl V …)
运行结果:
代码框架一览(非完整Project)
_Digital_Envelope.h
#pragma once
//
// _Digital_Envelope 类体设计,数字信封
// 2019.06.06
// Coded By YI MENG
//
// 把十六进制、十、二进制弄到这里来
#include <string>
#include <windows.h>
class DigitalEnvelope {
public:
//friend class GIFT_128; // GIFT_128类 需要调用进制转换函数,友元处理,,,封装性破坏太大,还是使用静态公有成员好一些
public:
void menu(); // 根据实际情况设定选项
static std::string Hex_TO_Bin(const std::string&); // 十六进制转二进制流
static std::string Bin_TO_Hex(const std::string&); // 二进制流转十六进制
private:
GIFT_128 gift;
RSA rsa;
std::string selection;