亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? linux網絡編程一步一步學-利用openssl提供的ssl操作函數進行加密通訊原始例子(18).txt

?? linux socket編程很好的學習文檔
?? TXT
字號:
Linux網絡編程一步一步學-利用OpenSSL提供的SSL操作函數進行加密通訊原始例子
關鍵詞: Linux    socket    OpenSSL    加密    安全                                           
首先,大家知道SSL這一目前“事實上的Internet加密標準”吧?一般的網站是沒有用到SSL的,所以如果你用TCPDUMP就可以很容易地看到別人上網的帳號、密碼之類的,當然,現在有些已經改用安全通訊方式進行驗證了,比如google的郵件服務gmail,而象銀行、證券等行業,從一開始就要求用加密通訊,你在哪個銀行網站上輸入帳號和密碼后點擊提交不是通過加密方式提交的呢?事實上,SSL也正是在銀行這些行業的需求下才產生的。
現在大家經常上網會上到一些https://開頭的網站,那就是把SSL標準應用到HTTP上從而變成了HTTPS。另外大家可能都不用telnet這個明文傳輸工具來進行遠程登錄了,都改用ssh了,ssh正是SSL的一個實現,用來進行遠程加密通訊的。

其次,要在我們現有的TCP程序上加上SSL,你得安裝開發包libssl-dev,這個包的描述是這樣的:
Package: libssl-dev
Priority: optional
Section: libdevel
Installed-Size: 5552
Maintainer: Debian OpenSSL Team 
Architecture: i386
Source: openssl
Version: 0.9.8a-7ubuntu0.3
Depends: libssl0.9.8 (= 0.9.8a-7ubuntu0.3), zlib1g-dev
Conflicts: ssleay (<< 0.9.2b), libssl08-dev, libssl09-dev, libssl095a-dev, libssl096-dev
Filename: pool/main/o/openssl/libssl-dev_0.9.8a-7ubuntu0.3_i386.deb
Size: 2023440
MD5sum: 3c4052d07abe7d7984a774ca815ba4cf
SHA1: 29145b66372613e78c37d9ce0de6a7d1cfc7bac0
SHA256: 9e86aa1174a45e4f61e5afcb56d485ea60f90e31b0ecaf2bf31f426f7eb8c6eb
Description: SSL development libraries, header files and documentation
libssl and libcrypt development libraries, header files and manpages
.
It is part of the OpenSSL implementation of SSL.
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu

Package: libssl-dev
Priority: optional
Section: libdevel
Installed-Size: 5548
Maintainer: Debian OpenSSL Team 
Architecture: i386
Source: openssl
Version: 0.9.8a-7build1
Depends: libssl0.9.8 (= 0.9.8a-7build1), zlib1g-dev
Conflicts: ssleay (<< 0.9.2b), libssl08-dev, libssl09-dev, libssl095a-dev, libssl096-dev
Filename: pool/main/o/openssl/libssl-dev_0.9.8a-7build1_i386.deb
Size: 2022142
MD5sum: c9b989aebbae4f6f5dbde67207858023
Description: SSL development libraries, header files and documentation
libssl and libcrypt development libraries, header files and manpages
.
It is part of the OpenSSL implementation of SSL.
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu
 

也就是說這個libssl-dev包是庫函數、頭文件以及相關編程說明文檔的集合。

安裝完成之后在/usr/share/doc/libssl-dev/demos目錄下有一些編程示例。你可以參照里面的文檔自己來寫加密通訊程序。

/************關于本文檔********************************************
*filename: Linux網絡編程一步一步學-利用OpenSSL提供的SSL操作函數進行加密通訊原始例子
*purpose: 說明了如果在Linux下利用OpenSSL庫函數進行SSL加密通訊程序開發
*tidied by: zhoulifa(zhoulifa@163.com) 周立發(http://zhoulifa.bokee.com)
Linux愛好者 Linux知識傳播者 SOHO族 開發者 最擅長C語言
*date time:2007-01-28 19:00
*Note: 任何人可以任意復制代碼并運用這些文檔,當然包括你的商業用途
* 但請遵循GPL
*Thanks to: Google.com
*Hope:希望越來越多的人貢獻自己的力量,為科學技術發展出力
* 科技站在巨人的肩膀上進步更快!感謝有開源前輩的貢獻!
*********************************************************************/

比如/usr/share/doc/libssl-dev/demos/bio目錄下提供的一個服務器端例子,代碼如下:
/* NOCW */
/* demos/bio/saccept.c */

/* A minimal program to server an SSL connection.
 * It uses blocking.
 * saccept host:port
 * host is the interface IP to use.  If any interface, use *:port
 * The default it *:4433
 *
 * cc -I../../include saccept.c -L../.. -lssl -lcrypto
 */

#include <stdio.h>
#include <signal.h>
#include <openssl/err.h>
#include <openssl/ssl.h>

#define CERT_FILE    "server.pem"

BIO *in=NULL;

void close_up()
    {
    if (in != NULL)
        BIO_free(in);
    }

int main(argc,argv)
int argc;
char *argv[];
    {
    char *port=NULL;
    BIO *ssl_bio,*tmp;
    SSL_CTX *ctx;
    SSL *ssl;
    char buf[512];
    int ret=1,i;

        if (argc <= 1)
        port="*:4433";
    else
        port=argv[1];

    signal(SIGINT,close_up);

    SSL_load_error_strings();

#ifdef WATT32
    dbug_init();
    sock_init();
#endif

    /* Add ciphers and message digests */
    OpenSSL_add_ssl_algorithms();

    ctx=SSL_CTX_new(SSLv23_server_method());
    if (!SSL_CTX_use_certificate_file(ctx,CERT_FILE,SSL_FILETYPE_PEM))
        goto err;
    if (!SSL_CTX_use_PrivateKey_file(ctx,CERT_FILE,SSL_FILETYPE_PEM))
        goto err;
    if (!SSL_CTX_check_private_key(ctx))
        goto err;

    /* Setup server side SSL bio */
    ssl=SSL_new(ctx);
    ssl_bio=BIO_new_ssl(ctx,0);

    if ((in=BIO_new_accept(port)) == NULL) goto err;

    /* This means that when a new connection is acceptede on 'in',
     * The ssl_bio will be 'dupilcated' and have the new socket
     * BIO push into it.  Basically it means the SSL BIO will be
     * automatically setup */
    BIO_set_accept_bios(in,ssl_bio);

again:
    /* The first call will setup the accept socket, and the second
     * will get a socket.  In this loop, the first actual accept
     * will occur in the BIO_read() function. */

    if (BIO_do_accept(in) <= 0) goto err;

    for (;;)
        {
        i=BIO_read(in,buf,512);
        if (i == 0)
            {
            /* If we have finished, remove the underlying
             * BIO stack so the next time we call any function
             * for this BIO, it will attempt to do an
             * accept */
            printf("Done\n");
            tmp=BIO_pop(in);
            BIO_free_all(tmp);
            goto again;
            }
        if (i < 0) goto err;
        fwrite(buf,1,i,stdout);
        fflush(stdout);
        }

    ret=0;
err:
    if (ret)
        {
        ERR_print_errors_fp(stderr);
        }
    if (in != NULL) BIO_free(in);
    exit(ret);
    return(!ret);
    }
 

對應的一個客戶端例子代碼如下:
/* NOCW */
/* demos/bio/sconnect.c */

/* A minimal program to do SSL to a passed host and port.
 * It is actually using non-blocking IO but in a very simple manner
 * sconnect host:port - it does a 'GET / HTTP/1.0'
 *
 * cc -I../../include sconnect.c -L../.. -lssl -lcrypto
 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <openssl/err.h>
#include <openssl/ssl.h>

extern int errno;

int main(argc,argv)
int argc;
char *argv[];
    {
    char *host;
    BIO *out;
    char buf[1024*10],*p;
    SSL_CTX *ssl_ctx=NULL;
    SSL *ssl;
    BIO *ssl_bio;
    int i,len,off,ret=1;

    if (argc <= 1)
        host="localhost:4433";
    else
        host=argv[1];

#ifdef WATT32
    dbug_init();
    sock_init();
#endif

    /* Lets get nice error messages */
    SSL_load_error_strings();

    /* Setup all the global SSL stuff */
    OpenSSL_add_ssl_algorithms();
    ssl_ctx=SSL_CTX_new(SSLv23_client_method());

    /* Lets make a SSL structure */
    ssl=SSL_new(ssl_ctx);
    SSL_set_connect_state(ssl);

    /* Use it inside an SSL BIO */
    ssl_bio=BIO_new(BIO_f_ssl());
    BIO_set_ssl(ssl_bio,ssl,BIO_CLOSE);

    /* Lets use a connect BIO under the SSL BIO */
    out=BIO_new(BIO_s_connect());
    BIO_set_conn_hostname(out,host);
    BIO_set_nbio(out,1);
    out=BIO_push(ssl_bio,out);

    p="GET / HTTP/1.0\r\n\r\n";
    len=strlen(p);

    off=0;
    for (;;)
        {
        i=BIO_write(out,&(p[off]),len);
        if (i <= 0)
            {
            if (BIO_should_retry(out))
                {
                fprintf(stderr,"write DELAY\n");
                sleep(1);
                continue;
                }
            else
                {
                goto err;
                }
            }
        off+=i;
        len-=i;
        if (len <= 0) break;
        }

    for (;;)
        {
        i=BIO_read(out,buf,sizeof(buf));
        if (i == 0) break;
        if (i < 0)
            {
            if (BIO_should_retry(out))
                {
                fprintf(stderr,"read DELAY\n");
                sleep(1);
                continue;
                }
            goto err;
            }
        fwrite(buf,1,i,stdout);
        }

    ret=1;

    if (0)
        {
err:
        if (ERR_peek_error() == 0) /* system call error */
            {
            fprintf(stderr,"errno=%d ",errno);
            perror("error");
            }
        else
            ERR_print_errors_fp(stderr);
        }
    BIO_free_all(out);
    if (ssl_ctx != NULL) SSL_CTX_free(ssl_ctx);
    exit(!ret);
    return(ret);
    }
 

編譯程序里象一般的gcc命令一樣,但需要鏈接ssl庫,比如
gcc -Wall saccept.c -o sslserver -lssl
gcc -Wall sconnect.c -o sslclient -l ssl




【作者: 周立發】【訪問統計:1658】【2007年01月28日 星期日 18:47】【注冊】【打印】 

Google Adsense
Sql Dev
PL/SQL development tool for Pro's Free Trial including all features! 
www.conquestsoftwaresolutions.com
 

搜索
            
Trackback
你可以使用這個鏈接引用該篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=6074014 
回復
 - 評論人:反對撒反對撒   2007-07-04 17:17:52      
代碼可以編譯成功,但根本測試不了

 
 - 評論人:周立發   2007-03-26 18:24:50      
先啟動服務端程序,再啟動客戶端程序。客戶端以SSL方式連接客戶端,服務端程序就處理客戶端請求,用點工夫讀懂上面兩個源代碼就知道了。

 
 - 評論人:Linux初學者   2007-03-15 16:17:11      
周大俠 編譯完以后 怎么測試呢?

 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久线观看视频| 在线综合+亚洲+欧美中文字幕| 亚洲图片欧美综合| 国产精品午夜春色av| 日韩精品一区二区在线| 成人av片在线观看| 国产精品亚洲午夜一区二区三区 | 国产精品乱人伦一区二区| 久久综合久久综合亚洲| 日韩一区二区三区免费观看| 在线观看日韩国产| 色哟哟精品一区| 99久久国产免费看| caoporn国产精品| 国产成人精品亚洲午夜麻豆| 国产精品一品二品| 人妖欧美一区二区| 五月天激情小说综合| 亚洲大片免费看| 亚洲成人自拍网| 亚洲自拍偷拍欧美| 亚洲九九爱视频| 亚洲国产va精品久久久不卡综合 | 狠狠狠色丁香婷婷综合激情| 久久99久久久欧美国产| 国产在线视视频有精品| 国产一区二区在线电影| 国产成人免费网站| 91小视频免费看| 91久久精品一区二区三| 欧美丰满少妇xxxxx高潮对白| 欧美日韩亚洲不卡| 日韩午夜小视频| 欧美精品一区二区三区在线播放 | 黄色日韩三级电影| 国产精品一区二区黑丝| 国产又黄又大久久| 99国产精品视频免费观看| 欧洲亚洲国产日韩| 欧美成人福利视频| 国产精品成人一区二区艾草 | 久久国产生活片100| 国产成人99久久亚洲综合精品| 成人手机在线视频| 欧美日韩在线播放三区四区| 欧美大胆一级视频| 国产偷国产偷精品高清尤物| 亚洲综合色视频| 国模一区二区三区白浆| 91影院在线免费观看| 91精品在线免费| 国产精品久久久久三级| 亚洲6080在线| 丁香五精品蜜臀久久久久99网站| 日韩av电影一区| 国产白丝网站精品污在线入口| 欧美视频中文字幕| 亚洲国产精品传媒在线观看| 亚洲一区二区3| 福利91精品一区二区三区| 欧美日韩在线观看一区二区 | 久久久久国产一区二区三区四区| 国产精品久久综合| 免费看欧美女人艹b| 99精品国产一区二区三区不卡| 欧洲日韩一区二区三区| 中文字幕一区二区不卡| 蜜桃视频在线观看一区| 色94色欧美sute亚洲线路一ni| 精品久久久久久久久久久久久久久久久 | 亚洲综合色婷婷| 亚洲国产成人tv| 91在线观看免费视频| 久久精品综合网| 粉嫩蜜臀av国产精品网站| 久久久亚洲精品石原莉奈| 国产精品资源网| 中国色在线观看另类| 成人深夜在线观看| 国产精品电影院| 色8久久精品久久久久久蜜| 一区二区三区在线观看视频| 色综合久久久久综合99| 亚洲一区在线电影| 91麻豆精品国产91久久久资源速度 | 偷偷要91色婷婷| 日韩久久久久久| 国产经典欧美精品| 国产精品久久久久久一区二区三区 | 成人av在线播放网站| 亚洲三级在线免费观看| 在线观看免费一区| 美女被吸乳得到大胸91| 国产精品美女久久久久久| 色婷婷精品久久二区二区蜜臀av| 亚洲综合免费观看高清在线观看 | 美脚の诱脚舐め脚责91| 久久久久国产精品麻豆| 91香蕉视频污在线| 午夜激情综合网| 久久久综合网站| 色婷婷香蕉在线一区二区| 奇米四色…亚洲| 国产精品久久福利| 在线电影一区二区三区| 成人免费毛片片v| 亚洲一区在线观看免费观看电影高清| 欧美精品色一区二区三区| 国产麻豆精品theporn| 亚洲精品久久久蜜桃| 日韩精品一区二区三区在线播放| 成人永久免费视频| 奇米四色…亚洲| 亚洲欧美另类小说| 欧美一级xxx| 91啦中文在线观看| 久久99精品国产| 一区二区三区精品| 中文字幕欧美日韩一区| 欧美一区二区视频在线观看2022| 99久久国产综合精品色伊| 久久成人免费网| 亚洲一二三区在线观看| 欧美激情资源网| 日韩欧美一区二区在线视频| 91浏览器在线视频| 国产精品亚洲视频| 免费在线观看成人| 亚洲韩国精品一区| 亚洲柠檬福利资源导航| 国产欧美日韩三级| 日韩免费一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲福利视频导航| 成人欧美一区二区三区黑人麻豆| 精品国产免费视频| 欧美一个色资源| 欧美另类久久久品| 欧美色图12p| 91猫先生在线| 91女厕偷拍女厕偷拍高清| 国产99一区视频免费| 韩国精品主播一区二区在线观看| 日韩激情视频网站| 亚洲成人av资源| 亚洲自拍偷拍网站| 亚洲一二三四在线观看| 亚洲综合网站在线观看| 一区二区三区不卡在线观看| 国产精品久久久久久久久久久免费看| 久久综合九色综合欧美亚洲| 精品久久五月天| 337p日本欧洲亚洲大胆精品| 精品欧美久久久| 久久婷婷久久一区二区三区| 日韩欧美精品在线视频| 精品久久免费看| 亚洲国产精华液网站w| 国产欧美一区在线| 国产精品视频一二三区| 中文无字幕一区二区三区 | 亚洲va在线va天堂| 日韩精彩视频在线观看| 人人精品人人爱| 极品少妇xxxx精品少妇| 高清不卡在线观看| 99精品黄色片免费大全| 欧美日韩在线综合| 精品久久五月天| 国产精品国产三级国产aⅴ入口| 日韩理论片一区二区| 亚洲精品美国一| 蜜臀av一区二区| 国产成人午夜精品影院观看视频| 成人黄动漫网站免费app| 色吊一区二区三区| 欧美一区二区三区在线视频| 国产三级欧美三级日产三级99| 国产精品久久久久久妇女6080| 亚洲一区二区三区爽爽爽爽爽| 日韩精品色哟哟| 国产91精品久久久久久久网曝门| 成人av手机在线观看| 欧美久久久一区| 欧美—级在线免费片| 亚洲gay无套男同| 成人激情av网| 欧美一区二区三区在| 中文字幕不卡的av| 香蕉av福利精品导航| 处破女av一区二区| 51久久夜色精品国产麻豆| 久久久精品黄色| 日韩精品亚洲专区| 91色porny在线视频| 日韩欧美一区二区视频| 一区二区三区中文字幕| 国产激情视频一区二区三区欧美| 欧美日韩一区二区三区免费看| 久久影音资源网|