普通的socket程序要实现SSL加密等功能,须对openssl进行什么操作?高分!

kkk16 2002-06-24 03:23:28
我有一些用socket 写的程序,因为现在要实现ssl加密功能,我已经从www.openssl.org下载了最新的openssl库,我该怎么用它?
谁能给我指点指点,有例子更好。
...全文
143 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kevin_qing 2002-06-24
  • 打赏
  • 举报
回复
你看看他的example目录,我记得是有的

kkk16 2002-06-24
  • 打赏
  • 举报
回复
Kevin_qing() ( ):

有没有需要验证的例子?
kkk16 2002-06-24
  • 打赏
  • 举报
回复
Kevin_qing() ( ):

有没有需要验证的例子?
kingzai 2002-06-24
  • 打赏
  • 举报
回复
我也是一知半解,就不敢出来献丑了。
http://www.codeproject.com/internet/sslsocket.asp
在安全论坛上搜索SSL也不少帖子
kingzai 2002-06-24
  • 打赏
  • 举报
回复
我也是一知半解,就不敢出来献丑了。
http://www.codeproject.com/internet/sslsocket.asp
在安全论坛上搜索SSL也不少帖子
Kevin_qing 2002-06-24
  • 打赏
  • 举报
回复
openssl里面有个例子程序可以照抄(无验证,只加密传输数据)。

#define _DLL_
#include <stdio.h>
#ifdef WIN32
#include <winsock.h>
#include <sys\types.h>
#else
#ifdef LINUX
#include <sys/socket.h>
#include <netdb.h>
#define SOCKET INT
#define HOSTENT struct hostent
#include <netinet/in.h>
// #include

#endif
#endif
#include <errno.h>
#include <openssl/rsa.h> /* SSLeay stuff */
#include <openssl/crypto.h>
#include <openssl/x509.h>
#include <openssl/pem.h>
#include <openssl/ssl.h>
#include <openssl/err.h>

#ifndef SSL_LOGFILE
#define SSL_LOGFILE "ssl.log"
#endif
#include <def.h>
int SSL_errno;
SOCKET SSL_Sock;
SSL_CTX* SSL_ctx;
SSL* SSL_ssl;
X509* SSL_server_cert;
LPSTR SSL_str;
SSL_METHOD *SSL_meth;

/**
/* Make a connection to server
/* param:
/* URL : server address
/* port: dest port to connect
/* return:
/* =0: initiate ok.
/* <0: error
**/
int SSL_Init(LPSTR URL,INT port )
{
#ifdef WIN32
WSADATA ws;
INT rc;
#endif
struct sockaddr_in sa;
HOSTENT *hp;
#ifdef WIN32
rc = WSAStartup(0x0101,&ws);
if(rc!=0) return -1;
#endif

#ifdef WIN32
SSL_Sock =socket(AF_INET,SOCK_STREAM,0);
#else
SSL_Sock =socket(PF_INET,SOCK_STREAM,0);
#endif

#ifdef WIN32
if(SSL_Sock==INVALID_SOCKET )
{
WSACleanup();
return -1;
}
#else
#ifdef LINUX
if(SSL_Sock<0)
{
return -1;
}
#endif

#endif

hp=gethostbyname(URL);
if(!hp)
{
#ifdef WIN32
WSACleanup();
#endif
return-1;
}
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = *(ULONG*)hp->h_addr; /* Server IP */
sa.sin_port = htons((USHORT)port); /* Server Port number */

if (connect(SSL_Sock,(struct sockaddr*)&sa,sizeof(sa))!=0)
{
#ifdef WIN32
WSACleanup();
#endif
return -1;
}

//----------------------------------------------------------------------------------

SSLeay_add_ssl_algorithms();
SSL_meth=SSLv2_client_method(); //Using ssl2 meth
if(!SSL_meth)
{
#ifdef WIN32
WSACleanup();
#endif
return -1;
}

//----------------------------------------------------------------

SSL_load_error_strings();
SSL_ctx = SSL_CTX_new (SSL_meth);
SSL_ssl=SSL_new(SSL_ctx);

SSL_set_fd (SSL_ssl, SSL_Sock);
SSL_in_init(SSL_ssl);
SSL_total_renegotiations(SSL_ssl);

SSL_errno= SSL_connect (SSL_ssl);
// SSL_set_timeout(SSL_ssl, 30);
return SSL_errno;
}

/**
/* clean up ssl connection
**/
INT SSL_Shutdown()
{
SSL_shutdown (SSL_ssl); /* send SSL/TLS close_notify */
#ifdef WIN32
closesocket(SSL_Sock);
WSACleanup();
#else
#ifdef LINUX
close(SSL_Sock);
#else
#error System
#endif
#endif
SSL_free (SSL_ssl);
SSL_CTX_free (SSL_ctx);

return 0;
}

/**
/* write a string buffer to server
/* param:
/* buf: pointer to string
/* return:
/* >=0: number of bytes written to server
/* <0: error
**/
INT SSL_Write(LPCSTR buf)
{
SSL_errno = SSL_write (SSL_ssl,buf,strlen(buf));
return SSL_errno;
}

/**
/* read a binary flow from server
/* param:
/* buf: pointer to buffer for saving data
/* max: Maximize bytes of this buffer
/* return:
/* >=0: number of bytes received
/* <0: error
**/
INT SSL_Read(LPSTR buf,INT max)
{
SSL_errno=SSL_read (SSL_ssl,buf,max);
return SSL_errno;
}
kkk16 2002-06-24
  • 打赏
  • 举报
回复
kingzai() ( )
给我讲讲该怎么用openssl 吧。
kkk16 2002-06-24
  • 打赏
  • 举报
回复
奇怪,我这里连http://www.copathway.com都打不开。
kingzai 2002-06-24
  • 打赏
  • 举报
回复
我这边可以呀,是一个SSL的socket类
kkk16 2002-06-24
  • 打赏
  • 举报
回复
楼上的那个链接无效啊。
kkk16 2002-06-24
  • 打赏
  • 举报
回复
楼上的那个链接好象无效啊。
kingzai 2002-06-24
  • 打赏
  • 举报
回复
http://www.copathway.com/vchelp/archive.asp?type_id=36&class_id=1&cata_id=5&article_id=675
www.openssl.org这个网站上的都是C代码,改起来比较复杂
kingzai 2002-06-24
  • 打赏
  • 举报
回复
http://www.copathway.com/vchelp/archive.asp?type_id=36&class_id=1&cata_id=5&article_id=675
www.openssl.org这个网站上的都是C代码,改起来比较复杂
kkk16 2002-06-24
  • 打赏
  • 举报
回复
难道没人吗?
有例子也可以发到我信箱里:bj_sh@sohu.com
分数可以在加。
请知道的同志说说相关的信息也给分。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧