日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2017-2018-1 20155222 201552228 实验五 通讯协议设计

發布時間:2024/4/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2017-2018-1 20155222 201552228 实验五 通讯协议设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2017-2018-1 20155222 201552228 實驗五 通訊協議設計

實驗內容和要求

  • 通訊協議設計-1
    在Ubuntu中完成 http://www.cnblogs.com/rocedu/p/5087623.html 中的作業
    提交運行結果截圖

  • 通訊協議設計-2
    在Ubuntu中實現對實驗二中的“wc服務器”通過混合密碼系統進行防護
    提交測試截圖

  • 通訊協議設計-3
    運行實驗箱中,ARM調用Z32算法的實驗,提交實驗截圖
    用Z32的國密算法重新改寫“wc服務器”的混合密碼系統防護,提交運行截圖
  • 實驗步驟

    SSL/TLS協議概述

    • 1994年Netscape開發了SSL(Secure Socket Layer,安全套接層協議),專門用于保護Web通訊。

    • 它采用公鑰技術,其目標是保證兩個應用間通信的保密性和可靠性,可在服務器和客戶機兩端同時實現支持。

    • 現行Web瀏覽器普遍將HTTP和SSL相結合,從而實現安全通信。

    SSL協議的使用

    SSL是獨立于各種協議的,常用于HTTP協議,但也可用于別的協議,如SMTP、TELNET等

    協議的目標:SSL/TLS被設計用來使用TCP提供一個可靠的端到端安全服務,為兩個通訊個體之間提供保密性和完整性(身份鑒別)。

    SSL/TLS提供3種標準服務:信息保密、信息完整性和雙向認證

    SSL的體系結構

    協議分為兩層
    底層:SSL記錄協議,為上層協議提供基本的安全業務。
    上層:SSL握手協議、SSL修改密碼說明協議、SSL警告協議,用于SSL交換過程的管理。


    Linux下OpenSSL的安裝

    Linux下的應用大多可以直接使用,也可以獲取源代碼自己進行編譯、安裝,使用源代碼安裝的過程一般是:

    configure make make install

    OpenSSL的安裝也是這樣。首先解壓源代碼:

    tar xzvf openssl-1.1.0-pre1.tar.gz
    然后進入源代碼目錄:

    cd openssl-1.1.0-pre1
    然后使用下列命令編譯安裝:

    ./configuremakesudo make install

    其實OpenSSL的安裝并不是這樣的,輸入./configue會報錯說找不到這個命令

    安裝流程

    • 直接百度openssl找到官網進去,找到下載鏈接鏈接到Github下載.zip文件

    • 在文件下載目錄里輸入命令解壓.zip文件
    unzip openssl-master.zip

    • 解壓完成后使用cd ./oenpssl-master命令進入解壓文件的目錄中再使用ls命令會看到這個文件里有一個ReadMe

    • 使用'./ReadMe'打開文檔,里面有詳細的安裝教程

    INSTALLATION ON THE UNIX PLATFORM

    Quick Start快速開始
    -----------

    If you want to just get on with it, do:如果你只是想快速上手做好使用準備,請執行以下操作:

    $ ./config

    $ make

    $ make test

    $ make install

    [If any of these steps fails, see section Installation in Detail below.][如果這些步驟中的任何一個失敗,請參見下面的詳細安裝部分。]

    Linux下OpenSSL的使用

    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 /usr/local/ssl/lib -ldl -lpthread

    執行./to;echo $

    基于Socket實現TCP通信,一人實現服務器,一人實現客戶端

    2017-2018-1 20155222 201552228 實驗三-并發程序

    研究OpenSSL算法,測試對稱算法中的AES,非對稱算法中的RSA,Hash算法中的MD5

    使用Openssl的AES加密算法

    實現對“wc服務器”的混合密碼系統防護

    #include <openssl/ssl.h> #include <openssl/err.h>int SSL_library_int(void);//OpenSSL初始化:在使用OpenSSL之前,必須進行相應的協議初始化工作,SSL_CTX *SSL_CTX_new(SSL_METHOD * method);//創建會話環境:在OpenSSL中創建的SSL會話環境稱為CTX,使用不同的協議會話,其環境也不一樣的。int SSL_CTX_set_verify(SSL_CTX *ctx,int mode,int(*verify_callback),int(X509_STORE_CTX *));//制定證書驗證方式:當SSL會話環境申請成功后,還要根據實際的需要設置CTX的屬性,通常的設置是指定SSL握手階段證書的驗證方式和加載自己的證書。SSL_CTX_load_verify_location(SSL_CTX *ctx,const char *Cafile,const char *Capath);//為SSL會話環境加載CA證書SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file,int type);//為SSL會話加載用戶證書SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx,const char* file,int type);//為SSL會話加載用戶私鑰int SSL_CTX_check_private_key(SSL_CTX *ctx);//在將證書和私鑰加載到SSL會話環境之后,驗證私鑰和證書是否相符:SSL *SSl_new(SSL_CTX *ctx);//申請一個SSL套接字int SSL_set_fd(SSL *ssl,int fd);)//綁定讀寫套接字int SSL_set_rfd(SSL *ssl,int fd);//綁定只讀套接字int SSL_set_wfd(SSL *ssl,int fd);//綁定只寫套接字int SSL_connect(SSL *ssl);//客戶端在成功創建SSL套接字后,應使用函數SSL_connect( )替代傳統的函數connect( )來完成握手過程int SSL_accept(SSL *ssl);//對服務器來講使用函數SSL_ accept ( )替代傳統的函數accept ( )來完成握手過程X509 *SSL_get_peer_certificate(SSL *ssl);//握手過程完成之后,通常需要詢問通信雙方的證書信息,以便進行相應的驗證X509_NAME *X509_get_subject_name(X509 *a);//該函數可以從SSL套接字中提取對方的證書信息,這些信息已經被SSL驗證過了。int SSL_read(SSL *ssl,void *buf,int num);//當SSL握手完成之后,就可以進行安全的數據傳輸了,在數據傳輸階段,需要使用SSL_read( )和SSL_write( )來替代傳統的read( )和write( )函數,來完成對套接字的讀寫操作int SSL_write(SSL *ssl,const void *buf,int num);int SSL_shutdown(SSL *ssl);//關閉SSL套接字void SSl_free(SSL *ssl);//釋放SSL套接字void SSL_CTX_free(SSL_CTX *ctx); //釋放SSL會話環境

    #include<netinet/in.h> // sockaddr_in …… #include <openssl/ssl.h> #include <openssl/err.h> …… #include<string.h> // bzero#define SERVER_PORT 8000 #define LENGTH_OF_LISTEN_QUEUE 20 #define BUFFER_SIZE 1024 #define FILE_NAME_MAX_SIZE 512 #define MAX 10000000 #define MAXBUF 1024int main(void) { // 聲明并初始化一個服務器端的socket地址結構 struct sockaddr_in server_addr; …… server_addr.sin_port = htons(SERVER_PORT); SSL_CTX *ctx; //ssl數據結構/* SSL 庫初始化 */ SSL_library_init();/* 載入所有 SSL 算法 */ OpenSSL_add_all_algorithms();/* 載入所有 SSL 錯誤消息 */ SSL_load_error_strings();/* 以 SSL V2 和 V3 標準兼容方式產生一個 SSL_CTX ,即 SSL Content Text */ ctx = SSL_CTX_new(SSLv23_server_method());/* 也可以用 SSLv2_server_method() 或 SSLv3_server_method() 單獨表示 V2 或 V3標準 */ if (ctx == NULL) {ERR_print_errors_fp(stdout);exit(1);}/* 載入用戶的數字證書, 此證書用來發送給客戶端。 證書里包含有公鑰 */ if (SSL_CTX_use_certificate_file(ctx, argv[3], SSL_FILETYPE_PEM) <= 0) {ERR_print_errors_fp(stdout);exit(1);}/* 載入用戶私鑰 */ if (SSL_CTX_use_PrivateKey_file(ctx, argv[4], SSL_FILETYPE_PEM) <= 0){ERR_print_errors_fp(stdout);exit(1);}/* 檢查用戶私鑰是否正確 */ if (!SSL_CTX_check_private_key(ctx)) {ERR_print_errors_fp(stdout);exit(1);}// 創建socket,若成功,返回socket描述符 int server_socket_fd = socket(PF_INET, SOCK_STREAM, 0); ……// 綁定socket和socket地址結構 ……// socket監聽 ……while(1){SSL *ssl;// 定義客戶端的socket地址結構struct sockaddr_in client_addr;socklen_t client_addr_length = sizeof(client_addr);// 接受連接請求,返回一個新的socket(描述符),這個新socket用于同連接的客戶端通信// accept函數會把連接到的客戶端信息寫到client_addr中int new_server_socket_fd = accept(server_socket_fd, (struct sockaddr*)&client_addr, &client_addr_length);……/* 基于 ctx 產生一個新的 SSL */ssl = SSL_new(ctx);/* 將連接用戶的 socket 加入到 SSL */SSL_set_fd(ssl, new_server_socket_fd);/* 建立 SSL 連接 */if (SSL_accept(ssl) == -1) {perror("accept");close(new_fd);break;}// recv函數接收數據到緩沖區buffer中char buffer[BUFFER_SIZE];bzero(buffer, BUFFER_SIZE);if(recv(new_server_socket_fd, buffer, BUFFER_SIZE, 0) < 0){perror("Server Recieve Data Failed:");break;}// 然后從buffer(緩沖區)拷貝到file_name中int len = SSL_read(ssl, buffer, MAXBUF);if (len > 0)printf("接收消息成功:'%s',共%d個字節的數據\n", buffer, len);elseprintf("消息接收失敗!錯誤代碼是%d,錯誤信息是'%s'\n",errno, strerror(errno));char file_name[FILE_NAME_MAX_SIZE+1];……// 打開文件并讀取文件數據FILE *fp = fopen(file_name, "r");if(NULL == fp){printf("File:%s Not Found\n", file_name);}else{//printf("buffer:%s\n",buffer);//buffer為filenamechar *argv[]={"wc","-w",file_name,0};execvp( "wc" ,argv);fclose(fp);/* 關閉 SSL 連接 */SSL_shutdown(ssl);/* 釋放 SSL */SSL_free(ssl);}// 關閉與客戶端的連接close(new_server_socket_fd);} // 關閉監聽用的socket close(server_socket_fd);/* 釋放 CTX */ SSL_CTX_free(ctx);return 0; }

    問題解決

    問題:輸入./configue會報錯說找不到這個命令**

    解決辦法

    • 直接百度openssl找到官網進去,找到下載鏈接鏈接到Github下載.zip文件

    • 在文件下載目錄里輸入命令解壓.zip文件

    unzip openssl-master.zip
    • 解壓完成后使用cd ./oenpssl-master命令進入解壓文件的目錄中再使用ls命令會看到這個文件里有一個ReadMe

    • 使用'./ReadMe'打開文檔,里面有詳細的安裝教程

    INSTALLATION ON THE UNIX PLATFORM

    Quick Start快速開始
    -----------

    If you want to just get on with it, do:如果你只是想快速上手做好使用準備,請執行以下操作:

    $ ./config

    $ make

    $ make test

    $ make install

    [If any of these steps fails, see section Installation in Detail below.][如果這些步驟中的任何一個失敗,請參見下面的詳細安裝部分。]

    PSP時間統計

    步驟耗時百分比
    需求分析10min8%
    設計20min16%
    代碼實現60min50%
    測試10min8%
    總結分析20min16%

    參考資料

    Linux中的./configure息
    安裝openssl錯誤解決
    fatal error: openssl/evp.h: 沒有那個文件或目錄
    如何利用OpenSSL庫進行RSA加密和解密
    使用Openssl的AES加密算法

    轉載于:https://www.cnblogs.com/besti20155228/p/8053618.html

    總結

    以上是生活随笔為你收集整理的2017-2018-1 20155222 201552228 实验五 通讯协议设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日本国产精品视频 | 日韩免费一二三区 | 片集网 | 日本三级吃奶头添泬 | 国产精品国产一区二区 | aa片在线观看视频在线播放 | 亚洲色婷婷久久精品av蜜桃 | 欧美与黑人午夜性猛交久久久 | 亚洲黄色影院 | 国产真实伦对白全集 | 激情国产| 国产91大片 | 黄色91视频 | youjizz自拍 | 蜜桃av网站 | 在线看片黄 | 亚洲欧美一区二区三区久久 | 毛片在哪看 | 欧美放荡办公室videos4k | 日本中文字幕在线播放 | 一起操17c | 五月天婷婷基地 | 4438全国最大成人网 | 国产在线播放91 | 神秘马戏团在线观看免费高清中文 | 精品成人无码久久久久久 | 亚洲在线成人 | 日韩不卡毛片 | 久久6| 色偷偷av一区二区三区 | 超碰在线观看免费版 | 国产日韩在线免费观看 | 色图视频 | 亚洲国产一二三 | 亚洲aⅴ乱码精品成人区 | 久久久精品免费视频 | 日日夜夜精品视频免费 | 亚洲香蕉中文网 | 日日夜夜精品视频免费 | free性欧美hd另类 | 超碰97免费 | 国产一区二区三区在线视频观看 | 欧美日韩性生活视频 | 日韩欧美综合视频 | 国产精品一二三区在线观看 | av免费入口 | 成人免费视频观看 | 黑人巨大国产9丨视频 | 色婷婷亚洲综合 | 国产精品伦一区二区三级古装电影 | 亚洲国产第一 | 国产视频在线观看一区 | 日韩激情网 | 色91精品久久久久久久久 | 国产18在线观看 | 91麻豆精品久久久久蜜臀 | 亚洲天堂无吗 | 日韩视频在线免费观看 | 亚洲AV成人无码电影在线观看 | 日韩中文字幕第一页 | 国产深夜视频 | 狠狠爱av | 99久久久无码国产精品性黑人 | 天天躁夜夜操 | 日韩精品视频三区 | 爱爱视频免费看 | 国产成人综合欧美精品久久 | 深夜成人在线观看 | 日日草 | 看全色黄大色黄大片大学生 | 97理伦| 久久日本视频 | 色综合a | 美女少妇一区二区 | 日本不卡高字幕在线2019 | 国产传媒视频在线 | 国产综合av | 91久久精 | 激情五月婷婷在线 | www.亚洲人| 中文字幕在线播出 | 国产真实交换夫妇视频 | 日本做爰高潮又黄又爽 | 日韩精品久久久久久 | 新91视频在线观看 | 色撸撸在线视频 | 毛片一区二区三区 | 国产精品毛片久久久久久 | 毛片99| 久爱精品 | 免费网站在线高清观看 | 99国产精品一区 | 日韩综合区 | 17c在线视频| 成人免费无码大片a毛片抽搐色欲 | 日韩欧美一二三四区 | 婷婷一区二区三区四区 | 91污网站| 亚洲经典三级 |