zoukankan      html  css  js  c++  java
  • 2019-2020-1 20175234 20175205 20175217 实验五 通讯协议设计

    2019-2020-1 20175234 20175205 20175217 实验五 通讯协议设计

    实验内容

    任务一

    实验要求

    实验步骤

    • 安装OpenSSL,OpenSSL是一个SSL协议的开源实现,采用C语言作为开发语言,具备了跨平台的能力,支持Unix/Linux、Windows、Mac OS等多种平台。

    • Linux下OpenSSL的使用

      • 通过man openssl查看帮助文档

    • 编写一个测试代码test_openssl.c
    #include <stdio.h>
    #include <openssl/evp.h>
    int main(){
    OpenSSL_add_all_algorithms();
    return 0;
    }
    
    • 然后使用gcc -o to test_openssl.c -I /usr/local/ssl/inlcude -L /usr/local/ssl/lib -ldl -lpthread进行编译

    • 执行./to;echo $?,结果打印0。

    任务二

    实验要求

    • 研究OpenSSL算法,测试对称算法中的AES,非对称算法中的RSA,Hash算法中的MD5
    • 基于Socket实现TCP通信,一人实现服务器,一人实现客户端
    • 选用合适的算法,基于混合密码系统实现对TCP通信进行机密性、完整性保护。
    • 学有余力者,对系统进行安全性分析和改进。

    实验步骤

    • AES
      • 测试命令:openssl enc -aes-128-cbc -in plain.txt -out 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

    • MD5
      -使用echo "20175217" | openssl dgst -md5用MD5算法加密信息"20175217"

    • Socket通信
      • 编译server.c:gcc -o server server.c -I /usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread
      • 编译telent.c:gcc -o telent telent.c -I /usr/local/ssl/include -L/usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread
      • 生产私钥和证书:openssl genrsa -out privkey.pem 1024openssl req -new -x509 -key privkey.pem -out CAcert.pem -days 1095
      • 运行:./server 8888 1 CAcert.pem privkey.pem./telent 127.0.0.1 8888

    遇到的问题及解决方法

    问题1:在进行编译时出现找不到文件的情况,错误提示:openssl error while loading shared libraries: libssl.so.1.1

    解决1:查询资料后发现这是由于openssl库的位置不正确造成的,用命令:ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1做一个软连接,即解决了该问题

  • 相关阅读:
    python wx安装
    HttpPost请求将带有数组json格式数据作为请求体传入的简单处理方法
    介绍基于camera和IMU的SLAM算法数据采集环境搭建
    《Linux操作系统分析》课程学习总结报告
    安装Sophus出现error: lvalue required as left operand of assignment unit_complex_.real() = 1.问题的解决办法
    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程
    深入理解系统调用
    基于mykernel 2.0编写一个操作系统内核
    QT 无法运行“rc.exe”?
    linux上boost库编程cmake配置出错
  • 原文地址:https://www.cnblogs.com/orii/p/11974583.html
Copyright © 2011-2022 走看看