# 2019-2020-1 20175334 实验五 《通讯协议设计》实验报告

本小妞迷上赌 提交于 2019-12-06 09:37:56

2019-2020-1 20175334 实验五 《通讯协议设计》实验报告

一、实验内容及步骤

实验五 通讯协议设计-1

  • 在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作业

  • 提交运行结果截图

  • 提交康奈尔笔记的照片(可以多张)

  • 了解OpenSSL

  • OpenSSL的安装与测试
  • 1.从OpenSSL源码下载地址下载压缩包
  • 2.输入命令unzip openssl-master.zip解压压缩包
  • 3.输入命令cd openssl-master./configsudo makesudo make install进入目录进行编译安装


  • 4.输入命令make test进行测试
  • 5.编写测试代码test_openssl.c
#include <stdio.h>
#include <openssl/evp.h>

int main(){
    
    OpenSSL_add_all_algorithms();
    
    return 0;
}
  • 6.使用OpenSSL密码算法库编译运行
    编译gcc -o test_openssl test_openssl.c -I /usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread
    运行,echo $?,打印0
  • 两人一组
    基于 Socket 实现 TCP 通信,一人实现服务器,一人实现客户端
    研究 OpenSSL 算法,测试对称算法中的 AES ,非对称算法中的 RSA , Hash 算法中的 MD5
    选用合适的算法,基于混合密码系统实现对 TCP 通信进行机密性、完整性保护。
    学有余力者,对系统进行安全性分析和改进。
  • 代码如下:
  • [服务器端](https://gitee.com/lxr175334/c2019/blob/master/exp5/server.c
  • [客户端](https://gitee.com/lxr175334/c2019/blob/master/exp5/client.c
  • 运行结果:
  • OpenSSL算法的指令内容(man openssl)
  • AES
    openssl enc -aes-128-cbc -in AES_test.txt -out AES_encrypt.txt -pass pass:123456 -p
  • RSA
    流程:
/*生成RSA密钥*/

$ openssl genrsa -des3 -passout pass:123456 -out RSA.pem 

/*提取公钥*/
$ openssl rsa -in RSA.pem -passin pass:123456 -pubout -out pub.pem 

/*使用RSA作为密钥进行加密,实际上使用其中的公钥进行加密*/

$ openssl rsautl -encrypt -in plain.txt -inkey RSA.pem -passin pass:123456 -out enc.txt

/*使用RSA作为密钥进行解密,实际上使用其中的私钥进行解密*/

$ openssl rsautl -decrypt -in enc.txt -inkey RSA.pem -passin pass:123456 -out replain.txt

/*比较原始文件和解密后文件*/

$ diff plain.txt replain.txt 

/*使用公钥进行加密*/

$ openssl rsautl -encrypt -in plain.txt -inkey pub.pem -pubin -out enc1.txt

/*使用RSA作为密钥进行解密,实际上使用其中的私钥进行解密*/

$ openssl rsautl -decrypt -in enc1.txt -inkey RSA.pem -passin pass:123456 -out replain1.txt

/*比较原始文件和解密后文件*/

$ diff plain.txt replain1.txt

  • MD5

实验五 通讯协议设计-2

  • 在Ubuntu中实现对实验二中的“wc服务器”通过混合密码系统进行防护

  • 提交测试截图
  • 编写代码
  • 服务器端及客户端
  • 编译
    gcc -o server server.c -I /usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread
    gcc -o telent telent.c -I /usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread
  • 产生私钥
    openssl genrsa -out privkey.pem 1024
  • 生成证书
    openssl req -new -x509 -key privkey.pem -out CAcert.pem -days 1095
  • 运行
    ./server 8888 1 CAcert.pem privkey.pem
    ./telent 127.0.0.1 5334

二、实验过程中遇到的问题以及解决方法

  • 问题1:运行AES时报错
  • 问题1解决方案:参考解决方法解决方法
  • 问题2:上传代码不成功后重新克隆仓库时报错
  • 问题2解决方案:参考解决方法

三、实验心得

  • 这次实验让我了解到了OpenSSL的功能与基本使用方法,学会了通过OpenSSL来测试对称算法中的AES,RSA,MD5等;除此之外,OpenSSL还囊括了SSL协议库、应用程序以及密码算法库等,对于我日后的学习有很大的帮助
步骤 耗时 百分比
需求分析 20min 13%
设计 30min 20%
代码实现 40min 27%
测试 30min 20%
分析总结 30min 20%
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!