社区
网络编程
帖子详情
求支持openssl的socket源代码
makeppy
2010-04-21 01:50:18
求支持openssl的socket源代码
mail:pangyongqiang0408@163.com
QQ:582044384
谢谢了
...全文
242
5
打赏
收藏
求支持openssl的socket源代码
求支持openssl的socket源代码 mail:pangyongqiang0408@163.com QQ:582044384 谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
makeppy
2010-04-21
打赏
举报
回复
[Quote=引用 2 楼 yincheng01 的回复:]
友情帮顶
[/Quote]谢谢了
尹成
2010-04-21
打赏
举报
回复
友情帮顶
soswaidao
2010-04-21
打赏
举报
回复
友情帮顶,友情帮顶
cyh000
2010-04-21
打赏
举报
回复
gsoap
makeppy
2010-04-21
打赏
举报
回复
谢谢了
openssl
-1.0.0a
openssl
-1.0.0a
源代码
SSL是Secure
Socket
Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。SSL采用公开密钥技术。其目标是保证两个应用间通信的保密性和可靠性,可在服务器端和用户端同时实现
支持
。目前,利用公开密钥技术的SSL协议,已成为Internet上保密通讯的工业标准。安全套接层协议能使用户/服务器应用之间的通信不被攻击者窃听,并且始终对服务器进行认证,还可选择对用户进行认证。SSL协议要
求
建立在可靠的传输层协议(TCP)之上。SSL协议的优势在于它是与应用层协议独立无关的,高层的应用层协议(例如:HTTP,FTP,TELNET等)能透明地建立于SSL协议之上。SSL协议在应用层协议通信之前就已经完成加密算法、通信密钥的协商及服务器认证工作。在此之后应用层协议所传送的数据都会被加密,从而保证通信的私密性。通过以上叙述,SSL协议提供的安全信道有以下三个特性: 1.数据的保密性 信息加密就是把明码的输入文件用加密算法转换成加密的文件以实现数据的保密。加密的过程需要用到密钥来加密数据然后再解密。没有了密钥,就无法解开加密的数据。数据加密之后,只有密钥要用一个安全的方法传送。加密过的数据可以公开地传送。 2.数据的一致性 加密也能保证数据的一致性。例如:消息验证码(MAC),能够校验用户提供的加密信息,接收者可以用MAC来校验加密数据,保证数据在传输过程中没有被篡改过。 3.安全验证 加密的另外一个用途是用来作为个人的标识,用户的密钥可以作为他的安全验证的标识。SSL是利用公开密钥的加密技术(RSA)来作为用户端与服务器端在传送机密资料时的加密通讯协定。 什么是
OpenSSL
众多的密码算法、公钥基础设施标准以及SSL协议,或许这些有趣的功能会让你产生实现所有这些算法和标准的想法。果真如此,在对你表示敬佩的同时,还是忍不住提醒你:这是一个令人望而生畏的过程。这个工作不再是简单的读懂几本密码学专著和协议文档那么简单,而是要理解所有这些算法、标准和协议文档的每一个细节,并用你可能很熟悉的C语言字符一个一个去实现这些定义和过程。我们不知道你将需要多少时间来完成这项有趣而可怕的工作,但肯定不是一年两年的问题。 首先,应该感谢Eric A. Young和Tim J. Hudson,他们自1995年开始编写后来具有巨大影响的
OpenSSL
软件包,更令我们高兴的是,这是一个没有太多限制的开放
源代码
的软件包,这使得我们可以利用这个软件包做很多事情。Eric A. Young 和Tim J. Hudson是加拿大人,后来由于写
OpenSSL
功成名就之后就到大公司里赚大钱去了。1998年,
OpenSSL
项目组接管了
OpenSSL
的开发工作,并推出了
OpenSSL
的0.9.1版,到目前为止,
OpenSSL
的算法已经非常完善,对SSL2.0、SSL3.0以及TLS1.0都
支持
。
OpenSSL
采用C语言作为开发语言,这使得
OpenSSL
具有优秀的跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台使用同样熟悉的东西。
OpenSSL
支持
Linux、Windows、BSD、Mac、VMS等平台,这使得
OpenSSL
具有广泛的适用性。不过,对于目前新成长起来的C++程序员,可能对于C语言的代码不是很习惯,但习惯C语言总比使用C++重新写一个跟
OpenSSL
相同功能的软件包轻松不少。
OpenSSL
整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。
OpenSSL
的目录结构自然也是围绕这三个功能部分进行规划的。 作为一个基于密码学的安全开发包,
OpenSSL
提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。 [编辑本段]对称加密算法
OpenSSL
一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都
支持
电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还
支持
三个密钥和两个密钥3DES算法。 [编辑本段]非对称加密算法
OpenSSL
一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。 [编辑本段]信息摘要算法
OpenSSL
实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,
OpenSSL
还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。 [编辑本段]密钥和证书管理 密钥和证书管理是PKI的一个重要组成部分,
OpenSSL
为之提供了丰富的功能,
支持
多种标准。 首先,
OpenSSL
实现了ASN.1的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请
求
以及CRL等数据对象的DER、PEM和BASE64的编解码功能。
OpenSSL
提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12和PKCS#8的编解码功能。
OpenSSL
在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发。 在此基础上,
OpenSSL
实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库,
支持
证书的管理功能,包括证书密钥产生、请
求
产生、证书签发、吊销和验证等功能。 事实上,
OpenSSL
提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。 5.SSL和TLS协议
OpenSSL
实现了SSL协议的SSLv2和SSLv3,
支持
了其中绝大部分算法协议。
OpenSSL
也实现了TLSv1.0,TLS是SSLv3的标准化版,虽然区别不大,但毕竟有很多细节不尽相同。 虽然已经有众多的软件实现了
OpenSSL
的功能,但是
OpenSSL
里面实现的SSL协议能够让我们对SSL协议有一个更加清楚的认识,因为至少存在两点:一是
OpenSSL
实现的SSL协议是开放
源代码
的,我们可以追究SSL协议实现的每一个细节;二是
OpenSSL
实现的SSL协议是纯粹的SSL协议,没有跟其它协议(如HTTP)协议结合在一起,澄清了SSL协议的本来面目。 [编辑本段]应用程序
OpenSSL
的应用程序已经成为了
OpenSSL
重要的一个组成部分,其重要性恐怕是
OpenSSL
的开发者开始没有想到的。现在
OpenSSL
的应用中,很多都是基于
OpenSSL
的应用程序而不是其API的,如OpenCA,就是完全使用
OpenSSL
的应用程序实现的。
OpenSSL
的应用程序是基于
OpenSSL
的密码算法库和SSL协议库写成的,所以也是一些非常好的
OpenSSL
的API使用范例,读懂所有这些范例,你对
OpenSSL
的API使用了解就比较全面了,当然,这也是一项锻炼你的意志力的工作。
OpenSSL
的应用程序提供了相对全面的功能,在相当多的人看来,
OpenSSL
已经为自己做好了一切,不需要再做更多的开发工作了,所以,他们也把这些应用程序成为
OpenSSL
的指令。
OpenSSL
的应用程序主要包括密钥生成、证书管理、格式转换、数据加密和签名、SSL测试以及其它辅助配置功能。 7.Engine机制 Engine机制的出现是在
OpenSSL
的0.9.6版的事情,开始的时候是将普通版本跟
支持
Engine的版本分开的,到了
OpenSSL
的0.9.7版,Engine机制集成到了
OpenSSL
的内核中,成为了
OpenSSL
不可缺少的一部分。 Engine机制目的是为了使
OpenSSL
能够透明地使用第三方提供的软件加密库或者硬件加密设备进行加密。
OpenSSL
的Engine机制成功地达到了这个目的,这使得
OpenSSL
已经不仅仅使一个加密库,而是提供了一个通用地加密接口,能够与绝大部分加密库或者加密设备协调工作。当然,要使特定加密库或加密设备更
OpenSSL
协调工作,需要写少量的接口代码,但是这样的工作量并不大,虽然还是需要一点密码学的知识。Engine机制的功能跟Windows提供的CSP功能目标是基本相同的。目前,
OpenSSL
的0.9.7版本
支持
的内嵌第三方加密设备有8种,包括:CryptoSwift、nCipher、Atalla、Nuron、UBSEC、Aep、SureWare以及IBM 4758 CCA的硬件加密设备。现在还出现了
支持
PKCS#11接口的Engine接口,
支持
微软CryptoAPI的接口也有人进行开发。当然,所有上述Engine接口
支持
不一定很全面,比如,可能
支持
其中一两种公开密钥算法。 [编辑本段]辅助功能 BIO机制是
OpenSSL
提供的一种高层IO接口,该接口封装了几乎所有类型的IO接口,如内存访问、文件访问以及
Socket
等。这使得代码的重用性大幅度提高,
OpenSSL
提供API的复杂性也降低了很多。
OpenSSL
对于随机数的生成和管理也提供了一整套的解决方法和
支持
API函数。随机数的好坏是决定一个密钥是否安全的重要前提。
OpenSSL
还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等。如果你有足够的耐心,将会在深入使用
OpenSSL
的过程慢慢发现很多这样的小功能,让你不断有新的惊喜。
openssl
1.0.0 天涯浪子
SSL,Security
Socket
Layer,是一个安全传输协议,在Internet网上进行数据保护和身份确认。
OpenSSL
是一个开放
源代码
的实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的。
OpenSSL
的官方网站为http://www.
openssl
.org/,
源代码
可以从ftp://ftp.
openssl
.org/source/上下载,也可以从
OpenSSL
的镜像网站下载。 以下是
OpenSSL
官方网站对该项目的介绍: The
OpenSSL
Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and Open Source toolkit implementing the Secure
Socket
s Layer (SSL v2/v3) and Transport Layer Security (TLS v1) protocols as well as a full-strength general purpose cryptography library. The project is managed by a worldwide community of volunteers that use the Internet to communicate, plan, and develop the
OpenSSL
toolkit and its related documentation.
OpenSSL
is based on the excellent SSLeay library developed by Eric A. Young and Tim J. Hudson. The
OpenSSL
toolkit is licensed under an Apache-style licence, which basically means that you are free to get and use it for commercial and non-commercial purposes subject to some simple license conditions.
Java+Tomcat黄金系列之二:Win10直接安装
OpenSSL
我将亲手带领您安装
OpenSSL
,并学习理论:1、Win10直接安装
OpenSSL
(不用编译源码)2、SSL与
OpenSSL
的理论学习:数字签名、数字证书、rsa加密3、
OpenSSL
心脏出血严重漏洞与解决方案 -------------------------------------------------------------------音视频是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。 目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。
openssl
编程
第一章 基础知识 8
1.1 对称算法 8
1.2摘要算法 8
1.3 公钥算法 9
1.4 回调函数 11
第二章
openssl
简介 13
2.1
openssl
简介 13
2.2
openssl
安装 13
2.2.1 linux下的安装 13
2.2.2 windows编译与安装 13
2.3
openssl
源代码
14
2.4
openssl
学习方法 16
第三章
openssl
堆栈 17
3.1
openssl
堆栈 17
3.2 数据结构 17
3.3 源码 17
3.4 定义用户自己的堆栈函数 18
3.5 编程示例 19
第四章
openssl
哈希表 21
4.1 哈希表 21
4.2 哈希表数据结构 21
4.3 函数说明 22
4.4 编程示例 24
第五章
openssl
内存分配 27
5.1
openssl
内存分配 27
5.2 内存数据结构 27
5.3 主要函数 28
5.4 编程示例 28
第六章
Openssl
动态模块加载 31
6.1 动态库加载 31
6.2 DSO概述 31
6.3 数据结构 31
6.4 编程示例 32
第七章
openssl
抽象IO 35
7.1
openssl
抽象IO 35
7.2 数据结构 35
7.3 BIO 函数 36
7.4 编程示例 37
7.4.1 mem bio 37
7.4.2 file bio 37
7.4.3
socket
bio 38
7.4.4 md BIO 40
7.4.5 cipher BIO 40
7.4.6 ssl BIO 41
7.4.7 其他示例 43
第八章
Openssl
配置文件 44
8.1 概述 44
8.2
openssl
配置文件读取 44
8.3 主要函数 44
8.4 编程示例 45
第九章
Openssl
随机数 47
9.1 随机数 47
9.2
openssl
随机数数据结构与源码 47
9.3 主要函数 48
9.4 编程示例 49
第十章
Openssl
文本数据库 51
10.1 概述 51
10.2 数据结构 51
10.3 函数说明 52
10.4 编程示例 52
第十一章
Openssl
大数 55
11.1 介绍 55
11.2
openssl
大数表示 55
11.3 大数函数 55
11.4 使用示例 58
第十二章
Openssl
base64编解码 65
12.1 BASE64编码介绍 65
12.2 BASE64编解码原理 65
12.3 主要函数 66
12.4 编程示例 66
第十三章
Openssl
ASN1库 69
13.1 ASN1简介 69
13.2 DER编码 70
13.3 ASN1基本类型示例 71
13.4
openssl
的ASN.1库 73
13.5 用
openssl
的ASN.1库DER编码 74
13.6
Openssl
的ASN.1宏 75
13.7 ASN1常用函数 76
13.8 属性证书编码 90
第十四章
Openssl
错误处理 94
14.1 概述 94
14.2 数据结构 94
14.3 主要函数 96
14.4 编程示例 98
第十五章
Openssl
摘要与HMAC 101
15.1 概述 101
15.2
openssl
摘要实现 101
15.3 函数说明 101
15.4 编程示例 102
15.5 HMAC 103
第十六章
Openssl
数据压缩 105
16.1 简介 105
16.2 数据结构 105
16.3 函数说明 106
16.4
openssl
中压缩算法协商 106
16.5 编程示例 107
第十七章
Openssl
RSA 108
17.1 RSA介绍 108
17.2
openssl
的RSA实现 108
17.3 RSA签名与验证过程 109
17.4 数据结构 109
17.4.1 RSA_METHOD 109
17.4.2 RSA 110
17.5 主要函数 111
17.6编程示例 112
17.6.1密钥生成 112
17.6.2 RSA加解密运算 114
17.6.3签名与验证 117
第十八章
Openssl
DSA 120
18.1 DSA简介 120
18.2
openssl
的DSA实现 120
18.3 DSA数据结构 121
18.4 主要函数 122
18.5 编程示例 123
18.5.1密钥生成 123
18.5.2签名与验证 124
第十九章
Openssl
DH 127
19.1 DH算法介绍 127
19.2
openssl
的DH实现 127
19.3数据结构 128
19.4 主要函数 129
19.5 编程示例 130
第二十章
Openssl
椭圆曲线 133
20.1 ECC介绍 133
20.2
openssl
的ECC实现 133
20.3 主要函数 134
20.4 编程示例 134
第二十一章
Openssl
EVP 138
21.1 EVP简介 138
21.2 数据结构 138
21.2.1 EVP_PKEY 138
21.2.2 EVP_MD 139
21.2.3 EVP_CIPHER 140
21.2.4 EVP_CIPHER_CTX 141
21.3 源码结构 141
21.4 摘要函数 142
21.5 对称加解密函数 142
21.6 非对称函数 143
21.7 BASE64编解码函数 144
21.8其他函数 144
21.9 对称加密过程 146
21.10 编程示例 147
第二十二章
Openssl
PEM格式 154
22.1 PEM概述 154
22.2
openssl
的PEM实现 154
22.3 PEM函数 155
22.4 编程示例 156
第二十三章
Openssl
Engine 160
23.1 Engine概述 160
23.2 Engine
支持
的原理 160
23.3 Engine数据结构 160
23.4
openssl
的Engine源码 161
23.5 Engine函数 162
23.6 实现Engine示例 163
第二十四章
Openssl
通用数据结构 177
24.1通用数据结构 177
24.2 X509_ALGOR 177
24.3 X509_VAL 178
24.4 X509_SIG 180
24.5 X509_NAME_ENTRY 181
24.6 X509_NAME 181
24.7 X509_EXTENSION 187
24.8 X509_ATTRIBUTE 193
24.9 GENERAL_NAME 195
第二十五章
Openssl
证书申请 198
25.1 证书申请介绍 198
25.2 数据结构 198
25.3 主要函数 199
25.4 编程示例 201
25.4.1生成证书请
求
文件 201
25.4.2 解码证书请
求
文件 203
第二十六章
Openssl
X509数字证书 205
26.1 X509数字证书 205
26.2 opessl实现 205
26.3 X509数据结构 205
26.4 X509_TRUST与X509_CERT_AUX 208
26.5 X509_PURPOSE 210
26.6 主要函数 213
26.7 证书验证 216
26.7.1证书验证项 216
26.7.2
Openssl
中的证书验证 216
第二十七章
Openssl
OCSP 217
27.1 概述 217
27.2
openssl
实现 217
27.3 主要函数 217
27.4编程示例 222
第二十八章
Openssl
CRL 223
28.1 CRL介绍 223
28.2 数据结构 223
28.3 CRL函数 224
28.4 编程示例 226
第二十九章
Openssl
PKCS7 228
29.1概述 228
29.2 数据结构 228
29.3 函数 229
29.4 消息编解码 229
29.4.1 data 230
29.4.2 signed data 230
29.4.3 enveloped 231
29.4.4 signed_and_enveloped 232
29.4.5 digest 233
29.4.6 encrypted 233
29.4.7 读取PEM 234
29.4.8 解码pkcs7 235
第三十章
Openssl
PKCS12 236
30.1 概述 236
30.2 openss实现 236
30.3数据结构 236
30.4函数 237
30.5 编程示例 239
第三十一章
Openssl
SSL实现 249
31.1概述 249
31.2
openssl
实现 249
31.3 建立SSL测试环境 249
31.4 数据结构 250
31.5 加密套件 251
31.6 密钥信息 252
31.7 SESSION 252
31.8 多线程
支持
253
31.9 编程示例 253
31.10 函数 264
第三十二章
Openssl
命令 267
32.1概述 267
32.2 asn1parse 267
32.3 dgst 269
32.4 gendh 270
32.5 passwd 270
32.6 rand 271
32.7 genrsa 271
32.8 req 272
32.9 x509 274
32.10 version 277
32.11 speed 277
32.12 sess_id 278
32.13 s_server 278
32.14 s_client 280
32.15 rsa 282
32.16 pkcs7 283
32.17 dsaparam 284
32.18 gendsa 284
32.19 enc 285
32.20 ciphers 286
32.21 CA 287
32.22 verify 291
32.23 rsatul 292
32.24 crl 293
32.25 crl2pkcs7 294
32.26 errstr 294
32.27 ocsp 295
32.28 pkcs12 298
32.29 pkcs8 300
32.30 s_time 301
32.31 dhparam和dh 302
32.32 ecparam 303
32.33 ec 304
32.34 dsa 305
32.35 nseq 306
32.36 prime 307
32.37 smime 307
OpenSSL
-1_0_0d_Win32
什么是
OpenSSL
众多的密码算法、公钥基础设施标准以及SSL协议,或许这些有趣的功能会让你产生实现所有这些算法和标准的想法。果真如此,在对你表示敬佩的同时,还是忍不住提醒你:这是一个令人望而生畏的过程。这个工作不再是简单的读懂几本密码学专著和协议文档那么简单,而是要理解所有这些算法、标准和协议文档的每一个细节,并用你可能很熟悉的C语言字符一个一个去实现这些定义和过程。我们不知道你将需要多少时间来完成这项有趣而可怕的工作,但肯定不是一年两年的问题。 首先,应该感谢Eric A. Young和Tim J. Hudson,他们自1995年开始编写后来具有巨大影响的
OpenSSL
软件包,更令我们高兴的是,这是一个没有太多限制的开放
源代码
的软件包,这使得我们可以利用这个软件包做很多事情。Eric A. Young 和Tim J. Hudson是加拿大人,后来由于写
OpenSSL
功成名就之后就到大公司里赚大钱去了。1998年,
OpenSSL
项目组接管了
OpenSSL
的开发工作,并推出了
OpenSSL
的0.9.1版,到目前为止,
OpenSSL
的算法已经非常完善,对SSL2.0、SSL3.0以及TLS1.0都
支持
。
OpenSSL
采用C语言作为开发语言,这使得
OpenSSL
具有优秀的跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台使用同样熟悉的东西。
OpenSSL
支持
Linux、Windows、BSD、Mac、VMS等平台,这使得
OpenSSL
具有广泛的适用性。不过,对于目前新成长起来的C++程序员,可能对于C语言的代码不是很习惯,但习惯C语言总比使用C++重新写一个跟
OpenSSL
相同功能的软件包轻松不少。
OpenSSL
的基本功能
OpenSSL
整个软件包大概可以分成三个主要的功能部分:密码算法库、SSL协议库以及应用程序。
OpenSSL
的目录结构自然也是围绕这三个功能部分进行规划的。 作为一个基于密码学的安全开发包,
OpenSSL
提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。 1.对称加密算法
OpenSSL
一共提供了8种对称加密算法,其中7种是分组加密算法,仅有的一种流加密算法是RC4。这7种分组加密算法分别是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都
支持
电子密码本模式(ECB)、加密分组链接模式(CBC)、加密反馈模式(CFB)和输出反馈模式(OFB)四种常用的分组密码加密模式。其中,AES使用的加密反馈模式(CFB)和输出反馈模式(OFB)分组长度是128位,其它算法使用的则是64位。事实上,DES算法里面不仅仅是常用的DES算法,还
支持
三个密钥和两个密钥3DES算法。 2.非对称加密算法
OpenSSL
一共实现了4种非对称加密算法,包括DH算法、RSA算法、DSA算法和椭圆曲线算法(EC)。DH算法一般用户密钥交换。RSA算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA算法则一般只用于数字签名。 3.信息摘要算法
OpenSSL
实现了5种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA算法事实上包括了SHA和SHA1两种信息摘要算法,此外,
OpenSSL
还实现了DSS标准中规定的两种信息摘要算法DSS和DSS1。 4.密钥和证书管理 密钥和证书管理是PKI的一个重要组成部分,
OpenSSL
为之提供了丰富的功能,
支持
多种标准。 首先,
OpenSSL
实现了ASN.1的证书和密钥相关标准,提供了对证书、公钥、私钥、证书请
求
以及CRL等数据对象的DER、PEM和BASE64的编解码功能。
OpenSSL
提供了产生各种公开密钥对和对称密钥的方法、函数和应用程序,同时提供了对公钥和私钥的DER编解码功能。并实现了私钥的PKCS#12和PKCS#8的编解码功能。
OpenSSL
在标准中提供了对私钥的加密保护功能,使得密钥可以安全地进行存储和分发。 在此基础上,
OpenSSL
实现了对证书的X.509标准编解码、PKCS#12格式的编解码以及PKCS#7的编解码功能。并提供了一种文本数据库,
支持
证书的管理功能,包括证书密钥产生、请
求
产生、证书签发、吊销和验证等功能。 事实上,
OpenSSL
提供的CA应用程序就是一个小型的证书管理中心(CA),实现了证书签发的整个流程和证书管理的大部分机制。 5.SSL和TLS协议
OpenSSL
实现了SSL协议的SSLv2和SSLv3,
支持
了其中绝大部分算法协议。
OpenSSL
也实现了TLSv1.0,TLS是SSLv3的标准化版,虽然区别不大,但毕竟有很多细节不尽相同。 虽然已经有众多的软件实现了
OpenSSL
的功能,但是
OpenSSL
里面实现的SSL协议能够让我们对SSL协议有一个更加清楚的认识,因为至少存在两点:一是
OpenSSL
实现的SSL协议是开放
源代码
的,我们可以追究SSL协议实现的每一个细节;二是
OpenSSL
实现的SSL协议是纯粹的SSL协议,没有跟其它协议(如HTTP)协议结合在一起,澄清了SSL协议的本来面目。 6.应用程序
OpenSSL
的应用程序已经成为了
OpenSSL
重要的一个组成部分,其重要性恐怕是
OpenSSL
的开发者开始没有想到的。现在
OpenSSL
的应用中,很多都是基于
OpenSSL
的应用程序而不是其API的,如OpenCA,就是完全使用
OpenSSL
的应用程序实现的。
OpenSSL
的应用程序是基于
OpenSSL
的密码算法库和SSL协议库写成的,所以也是一些非常好的
OpenSSL
的API使用范例,读懂所有这些范例,你对
OpenSSL
的API使用了解就比较全面了,当然,这也是一项锻炼你的意志力的工作。
OpenSSL
的应用程序提供了相对全面的功能,在相当多的人看来,
OpenSSL
已经为自己做好了一切,不需要再做更多的开发工作了,所以,他们也把这些应用程序成为
OpenSSL
的指令。
OpenSSL
的应用程序主要包括密钥生成、证书管理、格式转换、数据加密和签名、SSL测试以及其它辅助配置功能。 7.Engine机制 Engine机制的出现是在
OpenSSL
的0.9.6版的事情,开始的时候是将普通版本跟
支持
Engine的版本分开的,到了
OpenSSL
的0.9.7版,Engine机制集成到了
OpenSSL
的内核中,成为了
OpenSSL
不可缺少的一部分。 Engine机制目的是为了使
OpenSSL
能够透明地使用第三方提供的软件加密库或者硬件加密设备进行加密。
OpenSSL
的Engine机制成功地达到了这个目的,这使得
OpenSSL
已经不仅仅使一个加密库,而是提供了一个通用地加密接口,能够与绝大部分加密库或者加密设备协调工作。当然,要使特定加密库或加密设备更
OpenSSL
协调工作,需要写少量的接口代码,但是这样的工作量并不大,虽然还是需要一点密码学的知识。Engine机制的功能跟Windows提供的CSP功能目标是基本相同的。目前,
OpenSSL
的0.9.7版本
支持
的内嵌第三方加密设备有8种,包括:CryptoSwift、nCipher、Atalla、Nuron、UBSEC、Aep、SureWare以及IBM 4758 CCA的硬件加密设备。现在还出现了
支持
PKCS#11接口的Engine接口,
支持
微软CryptoAPI的接口也有人进行开发。当然,所有上述Engine接口
支持
不一定很全面,比如,可能
支持
其中一两种公开密钥算法。 8.辅助功能 BIO机制是
OpenSSL
提供的一种高层IO接口,该接口封装了几乎所有类型的IO接口,如内存访问、文件访问以及
Socket
等。这使得代码的重用性大幅度提高,
OpenSSL
提供API的复杂性也降低了很多。
OpenSSL
对于随机数的生成和管理也提供了一整套的解决方法和
支持
API函数。随机数的好坏是决定一个密钥是否安全的重要前提。
OpenSSL
还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等。如果你有足够的耐心,将会在深入使用
OpenSSL
的过程慢慢发现很多这样的小功能,让你不断有新的惊喜。
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章