hiredis 源码学习

前段时间学习 Redis 时候,听到 hiredis 的大名,正好也在做异步的学习,就找来代码学习一下。 我几乎不太会 C,仅限于最简单的语法,完全没有在生产环境中写过, 所以先看个 Client 简单代码,下次看 Memcached 代码应该会更顺畅一些。

Hiredis 是用 C 写的 Redis 客户端,对 Redis 协议进行了简单的封装, 同时提供了同步和异步的两种 API。Hiredis 的代码位于 https://github.com/redis/hiredis

more ...

使用DataConnectionDialog来获取连接字符串

在系统开发中,数据库连接字符串经常被保存到.config/.ini等配置文件中,以提高系统的灵活性。上大学时候,为了实现灵活配置数据库的效果,用拼字符串的方 法来动态生成连接字符串,这种方法充满了Bad Smell。

昨天用CodeSmith时候,看到它的数据连接配置界面,如此的眼熟,如下图。

image

Google了一下,原来这家伙的名字叫做DataConnectionDialog,所属命名空间为Microsoft.VisualStudio.Data。

使用的方法也很简单,引用Microsoft.Data.ConnectionUI.dll和Microsoft.Data.ConnectionUI.Dialog .dll,这两个文件位于Microsoft Visual Studio 9.0Common7IDE下面。

这两个dll并没有其他依赖关系,可以放心的放到自己的程序中使用。

使用代码如下

DataConnectionDialog dataConnectionDialog = new DataConnectionDialog();
DataSource.AddStandardDataSources(dataConnectionDialog);
if (DataConnectionDialog.Show(dataConnectionDialog) == DialogResult.OK ...
more ...


OpenSSL 编程入门【转载-这篇很精】

OpenSSL 编程入门

作者:Eric Rescorla on Sat, 2001-09-01 01:0

如果你急切的想构建一个简单的Web客户端和服务器对,这时你就需要使用SSL了..

SSL是一种保护基于TCP协议的网络应用最快而且最简单的的方法,如果你正在用C语言做开发,那么对于你来说,最好的选择可能就是使用OpenSSL了. OpenSSL是在Eric Young的SSLeay包的基础上对TSL/SSL的一个免费的执行(类似于BSD方式的License).然而, 不幸运的事情是, 伴随OpenSSL一起发布的文档和示例代码并不是很完全, 使用它的人需要更多的东西.在OpenSSL被使用之处, man手册都相当优秀,可是这些手册失去了大的背景 因为它们只是参考资料而不是教程.

OpenSSL的API多而复杂, 因此我们在此并不会作出一个完整的讲述. 相反,我的目的只是教会你如何去高效的使用man手册.在本文中, 我们将会通过构建一个简单的Web客户端和服务器来演示OpenSSL的基本特点. 而在后续的第二篇中我们将会介绍OpenSSL的一些高级特性, 比如会话恢复和客户端认证等.

在话题开始之前, 我会认为你已经熟悉SSL和HTTP了, 或者最起码在概念层上应该有一些了解. 如果你对此一无所知, 推荐一个比较好的方法,那就是参考RFC(参见附录).

由于篇幅原因, 本文只包涵了源代码的一些摘录, 完整的代码可以从作者的站点http://www.rtfm.com ...

more ...

OpenSSL中的BIO【转载】

SSL类型的BIO

---根据openssl doccryptobio_f_ssl.pod翻译和自己的理解写成

(作者:DragonKing, Mail: wzhah@263.net ,发布于:http://openssl.126.com 之openssl专业论坛)

从名字就可以看出,这是一个非常重要的BI O类型,它封装了openssl里面的ssl规则和函数,相当于提供了一个使用SSL很好的有效工具,一个很好的助手。其定义(opensslbio.h,opens slssl.h)如下:

BIO_METHOD *BIO_f_ssl(void);

define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)ssl)

define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL ...

more ...

用openssl编写ssl,tls程序实例【转载-作者:yawl(yawl@nsfocus.com) 】

◆ 用openssl编写ssl,tls程序

作者:yawl(yawl@nsfocus.com)

日期:2000-8-15

一:简介:

ssl(secure socket layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版.tls(transport layer security)是ietf的tls工作组在ssl3.0基础之上提出的安全通信标准,目前版本是1.0,即rfc2246.ssl/tls提供的安全 机制可以保证应用层数据在互联网络传输不被监听,伪造和窜改.

openssl(www.openssl.org)是sslv2,sslv3,tlsv1的一份完整实现,内部包含了大量加密算法程序.其命令行提供了丰富的加密,验 证,证书生成等功能,甚至可以用其建立一个完整的ca.与其同时,它也提供了一套完整的库函数,可用开发用ssl/tls的通信程序. apache的https两种 ...

more ...

用openssl进行SSL编程【转载-月光】

主要介绍openssl进行SSL通信的一些函数以及过程,主要是初始化过程,至于数据的接收以及后续处理可以具体问题具体分析。

load所有的SSL算法

OpenSSL_add_ssl_algorithms();

建立SSL所用的method

SSL_METHOD *meth=SSLv23_method();

初始化上下文情景

SSL_CTX *ctx=SSL_CTX_new(meth);

ret->quiet_shutdown=1;默认的是ret->quiet_shutdown=0;他相当于SSL_set_shutdown函数将参数设置为SS L_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN

当设置为1时,假如关闭后,不通知对方,这样不适合TLS标准

SSL_CTX_set_quiet_shutdown(ctx,1);

ctx->options|=SSL_OP_ALL,SSL/TLS有几个公认的bug,这样设置会使出错的可能更小

SSL_CTX_set_options(ctx,SSL_OP_ALL);

设置cache的大小,默认的为1024*20=20000,这个也就是可以存多少个session_id,一般都不需要更改的。假如为0的话将是无限

SSL_CTX_sess_set_cache_size(ctx,128);

SSL_CTX_load_verify_locations用于加载受信任的CA证书 ...

more ...

使用 OpenSSL API 进行安全编程【转载】

使用 OpenSSL API 进行安全编程

创建基本的安全连接和非安全连接

级别: 初级

Kenneth Ballard (kenneth.ballard@ptk.org), 自由程序员

2004 年 8 月 09 日

学习如何使用 OpenSSL ---- 用于安全通信的最著名的开放库 ---- 的 API 有些强人所难,因为其文档并不完全。您可以通过本文中的提示补充这方面的知识,并驾驭该 API。在建立基本的连接之后,就可以查看如何使用 OpenSSL 的 BIO 库来建立安全连接和非安全连接。与此同时,您还会学到一些关于错误检测的知识。

OpenSSL API 的文档有些含糊不清。因为还没有多少关于 OpenSSL 使用的教程,所以对初学者来说,在应用程序中使用它可能会有一些困难。那么怎样才能使用 OpenSSL 实现一个基本的安全连接呢?本教程将帮助您解决这个问题 ...

more ...

用OpenSSL创建证书时用到的命令【原创】

这几天在弄OpenSSL需要使用的证书,翻了很多文档,找来一《本OpenSSL与网络信息安全- 基础、结构和指令》,书上的密码学和OpenSSL的基础介绍的很详细,但是缺少一些实例。

这证书死活做不出来,最后在《计算机网络高级软件编程技术》上第19章"利用OpenSSL实现安全的Web Server"中找到自己需要的内容,现在分享一下。

1.生成CA中心的私钥

openssl req -newkey rsa:1024 -sha1 -keyout rootkey.pem -out rootreq.pem

2.生成CA中心的自签证书

openssl x509 -req -in rootreq.pem -sha1 -extensions v3_ca -days 365 -signkey rootkey.pem -out rootcert.pem

3 ...

more ...

常见证书格式和转换【转载】

这些文字都是转来转去,都找不到原作者是谁,唉````

仍然感谢作者的贡献....

PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有:

PKCS#7 Cryptographic Message Syntax Standard

PKCS#10 Certification Request Standard

PKCS#12 Personal Information Exchange Syntax Standard

X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。

PKCS#7 常用的后缀是: .P7B .P7C ...

more ...