zoukankan      html  css  js  c++  java
  • 2019-2020-1 20175334 实验五 《通讯协议设计》实验报告

    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%
  • 相关阅读:
    第十一周课程总结
    第十周学习总结
    第j九周学习总结暨第七周实验报告
    第八周学习总结暨第六周实验报告
    第七周学习总结暨第五周实验报告
    第六周学习总结暨第四周实验报告
    学习总结
    第十四周课程总结&实验报告
    第十三周课程总结
    第十三周课程总结 记事本
  • 原文地址:https://www.cnblogs.com/lxr1006/p/11974598.html
Copyright © 2011-2022 走看看