openssl教程完全版Word格式.doc
《openssl教程完全版Word格式.doc》由会员分享,可在线阅读,更多相关《openssl教程完全版Word格式.doc(653页珍藏版)》请在冰豆网上搜索。
5.2 内存数据结构 27
5.3 主要函数 28
5.4 编程示例 29
第六章 动态模块加载 30
6.1 动态库加载 30
6.2 DSO概述 30
6.3 数据结构 31
6.4 编程示例 32
第七章 抽象IO 34
7.1 openssl抽象IO 34
7.2 数据结构 34
7.3 BIO函数 36
7.4 编程示例 36
7.4.1 membio 36
7.4.2 filebio 37
7.4.3 socketbio 38
7.4.4 mdBIO 39
7.4.5 cipherBIO 40
7.4.6 sslBIO 41
7.4.7 其他示例 42
第八章 配置文件 43
8.1 概述 43
8.2 openssl配置文件读取 43
8.3 主要函数 44
8.4 编程示例 44
第九章 随机数 46
9.1 随机数 46
9.2 openssl随机数数据结构与源码 46
9.3 主要函数 48
9.4 编程示例 48
第十章 文本数据库 50
10.1 概述 50
10.2 数据结构 51
10.3 函数说明 51
10.4 编程示例 52
第十一章 大数 54
11.1 介绍 54
11.2 openssl大数表示 54
11.3 大数函数 55
11.4 使用示例 58
第十二章 BASE64编解码 64
12.1 BASE64编码介绍 64
12.2 BASE64编解码原理 64
12.3 主要函数 65
12.4 编程示例 66
第十三章 ASN1库 68
13.1 ASN1简介 68
13.2 DER编码 70
13.3 ASN1基本类型示例 70
13.4 openssl的ASN.1库 73
13.5 用openssl的ASN.1库DER编解码 74
13.6 Openssl的ASN.1宏 74
13.7 ASN1常用函数 75
13.8 属性证书编码 89
第十四章 错误处理 93
14.1 概述 93
14.2 数据结构 93
14.3 主要函数 95
14.4 编程示例 97
第十五章 摘要与HMAC 100
15.1 概述 100
15.2 openssl摘要实现 100
15.3 函数说明 101
15.4 编程示例 101
15.5 HMAC 103
第十六章 数据压缩 104
16.1 简介 104
16.2 数据结构 104
16.3 函数说明 105
16.4 openssl中压缩算法协商 106
16.5 编程示例 106
第十七章 RSA 107
17.1RSA介绍 107
17.2 openssl的RSA实现 107
17.3 RSA签名与验证过程 108
17.4 数据结构 109
17.4.1RSA_METHOD 109
17.4.2 RSA 110
17.5 主要函数 110
17.6编程示例 112
17.6.1密钥生成 112
17.6.2 RSA加解密运算 113
17.6.3签名与验证 116
第十八章 DSA 119
18.1 DSA简介 119
18.2 openssl的DSA实现 120
18.3 DSA数据结构 120
18.4 主要函数 121
18.5 编程示例 122
18.5.1密钥生成 122
18.5.2签名与验证 124
第十九章DH 126
19.1 DH算法介绍 126
19.2 openssl的DH实现 127
19.3数据结构 127
19.4 主要函数 128
19.5 编程示例 129
第二十章 椭圆曲线 132
20.1 ECC介绍 132
20.2 openssl的ECC实现 133
20.3 主要函数 135
20.3.1参数设置 135
20.3.2参数获取 136
20.3.3转化函数 137
20.3.4其他函数 137
20.4 编程示例 139
第二十一章 EVP 143
21.1EVP简介 143
21.2数据结构 143
21.2.1 EVP_PKEY 144
21.2.2 EVP_MD 144
21.2.3 EVP_CIPHER 145
21.2.4 EVP_CIPHER_CTX 146
21.3源码结构 147
21.4摘要函数 147
21.5对称加解密函数 148
21.6非对称函数 149
21.7 BASE64编解码函数 149
21.8其他函数 150
21.9对称加密过程 152
21.10 编程示例 152
第二十二章 PEM格式 159
22.1 PEM概述 159
22.2 openssl的PEM实现 160
22.3 PEM函数 161
22.4 编程示例 161
第二十三章 Engine 165
23.1 Engine概述 165
23.2 Engine支持的原理 165
23.3 Engine数据结构 166
23.4 openssl的Engine源码 167
23.5 Engine函数 167
23.6 实现Engine示例 169
第二十四章 通用数据结构 182
24.1通用数据结构 182
24.2 X509_ALGOR 182
24.3 X509_VAL 184
24.4 X509_SIG 185
24.5 X509_NAME_ENTRY 186
24.6 X509_NAME 187
24.7 X509_EXTENSION 193
24.8 X509_ATTRIBUTE 199
24.9 GENERAL_NAME 200
第二十五章 证书申请 203
25.1 证书申请介绍 203
25.2 数据结构 203
25.3 主要函数 204
25.4 编程示例 206
25.4.1生成证书请求文件 206
25.4.2 解码证书请求文件 208
第二十六章 X509数字证书 210
26.1 X509数字证书 210
26.2 opessl实现 210
26.3 X509数据结构 210
26.4 X509_TRUST与X509_CERT_AUX 214
26.5 X509_PURPOSE 215
26.6 主要函数 218
26.7 证书验证 221
26.7.1证书验证项 221
26.7.2 Openssl中的证书验证 221
第二十七章 OCSP 222
27.1 概述 222
27.2 openssl实现 222
27.3 主要函数 222
27.4编程示例 227
第二十八章 CRL 228
28.1 CRL介绍 228
28.2 数据结构 228
28.3 CRL函数 230
28.4 编程示例 231
第二十九章 PKCS7 233
29.1概述 233
29.2 数据结构 233
29.3 函数 234
29.4 消息编解码 235
29.4.1 data 235
29.4.2 signeddata 236
29.4.3 enveloped 237
29.4.4 signed_and_enveloped 238
29.4.5 digest 238
29.4.6 encrypted 239
29.4.7 读取PEM 239
29.4.8 解码pkcs7 240
第三十章 PKCS12 241
30.1 概述 241
30.2 openss实现 241
30.3数据结构 242
30.4函数 243
30.5 编程示例 245
第三十一章 SSL实现 254
31.1概述 254
31.2 openssl实现 254
31.3 建立SSL测试环境 254
31.4 数据结构 256
31.5 加密套件 256
31.6 密钥信息 257
31.7 SESSION 258
31.8 多线程支持 258
31.9 编程示例 259
31.10 函数 270
第三十二章 Openssl命令 272
32.1概述 272
32.2 asn1parse 272
32.3 dgst 274
32.4 gendh 275
32.5 passwd 276
32.6 rand 276
32.7 genrsa 277
32.8 req 278
32.9 x509 280
32.10 version 283
32.11 speed 283
32.12 sess_id 284
32.13 s_server 284
32.14 s_client 286
32.15 rsa 288
32.16 pkcs7 289
32.17 dsaparam 290
32.18 gendsa 291
32.19 enc 291
32.20 ciphers 292
32.21 CA 293
32.22 verify 296
32.23 rsatul 297
32.24 crl 299
32.25 crl2pkcs7 300
32.26 errstr 300
32.27ocsp 301
32.28 pkcs12 304
32.29 pkcs8 306
32.30 s_time 307
32.31dhparam和dh 308
32.32 ecparam 309
32.33 ec 310
32.34 dsa 311
32.35 nseq 312
32.36 prime 313
32.37 smime 313
第一章 基礎知識
1.1 對稱演算法
對稱演算法使用一個金鑰。
給定一個明文和一個金鑰,加密產生密文,其長度和明文大致相同。
解密時,使用讀金鑰與加密金鑰相同。
對稱演算法主要有四種加密模式:
(1) 電子密碼本模式
ElectronicCodeBook(ECB)
這種模式是最早採用和最簡單的模式,它將加密的資料分成若干組,每組的大小跟加密金鑰長度相同,然後每組都用相同的金鑰進行加密。
其缺點是:
電子編碼薄模式用一個金鑰加密消息的所有塊,如果原消息中重複明文塊,則加密消息中的相應密文塊也會重複,因此,電子編碼薄模式適於加密小消息。
(2)加密塊鏈模式 CipherBlockChaining(CBC)
CBC模式的加密首先也是將明文分成固定長度的塊,然後將前面一個加密塊輸出的密文與下一個要加密的明文塊進行異或操作,將計算結果再用金鑰進行加密得到密文。
第一明文塊加密的時候,因為前面沒有加密的密文,所以需要一個初始化向量。
跟ECB方式不一樣,通過連接關係,使得密文跟明文不再