2019-2020-1 20175334 实验五 《通讯协议设计》实验报告
一、实验内容及步骤
实验五 通讯协议设计-1
在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作业
提交运行结果截图
提交康奈尔笔记的照片(可以多张)
- OpenSSL的安装与测试
- 1.从OpenSSL源码下载地址下载压缩包
- 2.输入命令
unzip openssl-master.zip
解压压缩包 - 3.输入命令
cd openssl-master
、./config
、sudo make
、sudo 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
二、实验过程中遇到的问题以及解决方法
三、实验心得
- 这次实验让我了解到了OpenSSL的功能与基本使用方法,学会了通过OpenSSL来测试对称算法中的AES,RSA,MD5等;除此之外,OpenSSL还囊括了SSL协议库、应用程序以及密码算法库等,对于我日后的学习有很大的帮助
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 20min | 13% |
设计 | 30min | 20% |
代码实现 | 40min | 27% |
测试 | 30min | 20% |
分析总结 | 30min | 20% |