OpenSSL 学习整理

OpenSSL安装使用(二):OpenSSL安装说明 注:该方法适用于Openssl 1.1.1及以上版本 1)安装环境:Windows10专业版+VS2010 阅读详情

Openssl目录名以及功能描述

目录名
 功能描述
 
Crypto
 存放OpenSSL 所有加密算法源码文件和相关标注如X.509 源码文件,是OpenSSL 中最重要的目录,包含了OpenSSL 密码算法库的所有内容。
 
SSL
 存放OpenSSL 中SSL 协议各个版本和TLS 1.0 协议源码文件,包含了OpenSSL 协议库的所有内容。
 
Apps
 存放OpenSSL 中所有应用程序源码文件,如CA、X509 等应用程序的源文件就存放在这里。
 
Doc
 存放了OpenSSL 中所有的使用说明文档,包含三个部分:应用程序说明文档、加密算法库API说明文档以及SSL 协议API 说明文档。
 
Demos
 存放了一些基于OpenSSL 的应用程序例子,这些例子一般都很简单,演示怎么使用OpenSSL其中的一个功能。
 
Include
 存放了使用OpenSSL 的库时需要的头文件。
 
Test
 存放了OpenSSL 自身功能测试程序的源码文件
 


OpenSSL 算法目录

openSSL 的算法目录Crypto 目录包含了OpenSSL 密码算法库的所有源代码文件,是OpenSSL 中最重要的目录之一。OpenSSL 的密码算法库包含了OpenSSL 中所有密码算法、密钥管理和证书管理相关标准的实现,在Windows 下编译后的库文件名为libeay32.lib,在Linux 下编译后生产的库文件名为libcrypto.a。Crypto 目录下包含了众多的子目录,这些目录大多数以相关的算法或标准名称的简写命名。当然,并非所有这些目录存放的源文件都是密码算法和标准,有些是OpenSSL 本身的一些相关功能文件,如BIO、DSO 和EVP 等。

Crypto 子目录列表

Aes
 对称算法,美国新的对称加密算法标准AES 算法源码。
 
Bf
 对称算法,Blowfish 对称加密算法源码。
 
Cast
 对称算法,CAST 对称加密算法源码。
 
Des
 对称算法,包括了DES 和3DES 对称加密算法源码。
 
Idea
 对称算法,IDEA 对称加密算法源码。
 
Rc2
 对称算法,RC2 对称加密算法源码。
 
Rc4
 对称算法,RC4 对称加密算法源码
 
Rc5
 对称算法,RC5 对称加密算法源码。
 
Dh
 非对称算法,DH 非对称密钥交换算法源码。
 
Dsa
 非对称算法,DSA 非对称算法源码,用于数字签名。
 
Ec
 非对称算法,EC 椭圆曲线算法源码。
 
Rsa
 非对称算法,RSA 非对称加密算法源码,既可以用于密钥交换,也可以用于数字签名。
 
Md2
 信息摘要算法,MD2 信息摘要算法源码。
 
Md5
 信息摘要算法,MD5 信息摘要算法源码。
 
Mdc2
 信息摘要算法,MDC2 信息摘要算法源码。
 
Sha
 信息摘要算法,SHA 信息摘要算法源码,包括了SHA1 算法。
 
Ripemd
 信息摘要算法,RIPEMD-160 信息摘要算法源码。
 
Comp
 数据压缩算法数据压缩算法的函数接口,目前没有压缩算法,只是定义了一些空的接口函数
 
Asn1
 PKI 相关标准ASN.1 标准实现源码,只实现了PKI 相关的部分,不是完全实现。包括DER 编解码等功能。
 
Ocsp
 PKI 相关标准OCSP(在线证书服务协议)实现源码。
 
Pem
 PKI 相关标准PEM 标准实现源码,包括了PEM 的编解码功能。
 
Pkcs7
 PKI 相关标准PKCS#7 标准实现源码。PKCS#7 是实现加密信息封装的标准,包括了证书封装的标准和加密数据的封装标准。
 
Pkcs12
 PKI 相关标准PKCS#12 标准实现源码。包括了PKCS#12 文件的编解码功能。PKCS#12是一种常用的证书和密钥封装格式。
 
X509
 PKI 相关标准X.509 标准的实现源码。包括了X.509 的编解码功能,证书管理功能等。X509v3 PKI 相关标准X.509 第三版扩展功能的实现源码。
 
Krb5
 其它标准支持支持Kerberos 协议的一些接口函数和结构定义
 
Hmac
 其它标准支持HMAC 标准的支持结构和函数源源代码。
 
Lhash
 其它标准支持动态HASH 表结构和函数源代码
 
Bio
 自定义OpenSSL 自身定义的一种抽象IO 接口,封装了各种平台的几乎所有IO 接口,如文件、内存、缓存、标准输入输出以及Socket 等等。
 
Bn
 自定义OpenSSL 实现大数管理的结构及其函数。
 
Buffer

 自定义OpenSSL 自定义的缓冲区结构体。
 
Conf
 自定义OpenSSL 自定义的管理配置结构和函数。
 
Dso
 自定义OpenSSL 自定义的加载动态库的管理函数接口。如使用Engine 机制就用到了这些函数提供的功能。
 
Engine
 自定义OpenSSL 自定义的Engine 机制源代码。Engine 机制运行OpenSSL 使用第三方提供的软件密码算法库或者硬件加密设备进行数据加密等运算。相当于Windows 平台的CSP 机制。
 


 Err 自定义OpenSSL 自定义的错误信息处理机制。
 
Evp
 自定义OpenSSL 定义的一组高层算法封装函数,包括了对称加密算法封装、非对称加密算法封装、签名验证算法封装以及信息摘要算法封装,类似

PKCS#11 提供的接口标准。
 
Objects
 自定义OpenSSL 管理各种数据对象的定义和函数。事实上,Objects 的OID 是根据ASN.1 的标准进行命名的,不完全是OpenSSL 自定义的结构。
 


 Rand 自定义OpenSSL 的安全随机数产生函数和管理函数。
 
Stack
 自定义定义了OpenSSL 中STACK 结构和相关管理函数。
 
Threads
 自定义OpenSSL 处理线程的一些机制。
 
Txt_db
 自定义OpenSSL 提供的文本证书库的管理机制。
 
Ui
 自定义OpenSSL 定义的一下用户接**换函数。
 
Perlasm
 自定义编译的时候需要用到的一些Perl 辅助配置文件。
 


对称加密算法

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 还使用EVP 封装了所有的对称加密算法,使得各种对成加密算法能够使用统一的API 接口EVP_Encrypt 和EVP_Decrypt 进行数据的加密和解密,大大提供了代码的可重用性能。

u 非对称加密算法

OpenSSL 一共实现了4 种非对称加密算法,包括DH 算法、RSA 算法、DSA 算法和椭圆曲线算法(EC)。DH 算法一般用户密钥交换。RSA 算法既可以用于密钥交换,也可以用于数字签名,当然,如果你能够忍受其缓慢的速度,那么也可以用于数据加密。DSA 算法则一般只用于数字签名。

跟对称加密算法相似,OpenSSL 也使用EVP 技术对不同功能的非对称加密算法进行封装,提供了统一的API 接口。如果使用非对称加密算法进行密钥交换或者密钥加密,则使用EVP_Seal 和EVP_Open 进行加密和解密;如果使用非对称加密算法进行数字签名,则使用EVP_Sign 和EVP_Verify 进行签名和验证。

u 信息摘要算法

OpenSSL 实现了5 种信息摘要算法,分别是MD2、MD5、MDC2、SHA(SHA1)和RIPEMD。SHA 算法事实上包括了SHA 和SHA1 两种信息摘要算法,此外,OpenSSL 还实现了DSS 标准中规定的两种信息摘要算法DSS 和DSS1。

OpenSSL 采用EVP_Digest 接口作为信息摘要算法统一的EVP 接口,对所有信息摘要算法进行了封装,提供了代码的重用性。

u 密钥和证书管理

密钥和证书管理是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),实现了证书签发的整个流程和证书管理的大部分机制。


u Engine 机制

Engine 机制的出现是在OpenSSL 的0.9.6 版的事情,开始的时候是将普通版本跟支持Engine 的版本分开的,到了OpenSSL 的0.9.7 版,Engine 机制集成到了OpenSSL 的内核中,成为了OpenSSL 不可缺少的一部分。

Engine 机制目的是为了使OpenSSL 能够透明地使用第三方提供的软件加密库或者硬件加密设备进行加密。OpenSSL 的Engine 机制成功地达到了这个目的,这使得OpenSSL 已经不仅仅使一个加密库,而是提供了一个通用地加密接口,能够与绝大部分加密库或者加密设备协调工作。当然,要使特定加密库或加密设备更OpenSSL 协调工作,需要写少量的接口代码,但是这样的工作量并不大,虽然还是需要一点密码学的知识。Engine 机制的功能跟Windows 提供的CSP 功能目标是基本相同的。

u BIO 机制

BIO 机制是OpenSSL 提供的一种高层

IO 接口,该接口封装了几乎所有类型的IO 接口,如内存访问、文件访问以及Socket 等。这使得代码的重用性大幅度提高,OpenSSL 提供API 的复杂性也降低了很多。

OpenSSL之五:OpenSSL的目录结构、功能和应用 OpenSSL的目录结构、功能和应用OpenSSL目录结构OpenSSL功能OpenSSL应用 OpenSSL由Eric A.Young和Time J.Hudson自1995年开始编写,1998年由OpenSSL项目组接管。目前最新稳定版本为1.1.1系列,也是长期支持(LTS)版本,支持至2023年9月11日。我们可以到官网https://www.openssl.org/source/下载,可用于商业和非商业项目。 OpenSSL支持Linux、Windows、BSD、Mac、VMS、Android、iO 阅读详情

相关推荐

非root用户下安装OpenSSL

普通用户下安装openssl

qq_43389408的博客 1157

OpenSSL接口说明文档

详细介绍了openssl各个接口的参数,返回值,方便使用者了解openssl函数的用法。

openssl 中文接口文档

介绍openssl相关结构,定义和函数,是我见过的最好的openssl中文文档

OpenSSL/GMSSL EVP接口说明——目录

OpenSSL/GMSSL EVP接口说明——目录

专注商用密码落地,方案与技术解析,分享密码技术与安全经验。 1万+

Openssl v3证书 配置文件

openssl

shareinfo2018 1701

OPENSSL 学习整理-介绍

来源: http://www.mscenter.edu.cn/blog/jeffrey/articles/8850.htmlOpenssl目录名以及功能描述 目录名 功能描述

denny的专栏 5924

OpenSSL 学习整理(转载)

 Openssl目录名以及功能描述  目录名  功能描述  Crypto  存放OpenSSL 所有加密算法源码文件和相关标注如X.509 源码文件,是OpenSSL 中最重要的目录,包含了OpenSSL 密码算法库的所有内容。  SSL  存放OpenSSLSSL 协议

856

Openssl源代码整理学习

一、基础知识 1.Openssl简史 OpenSSL项目是加拿大人EricA.Yang和TimJ.Hudson开发,现在有Openssl项目小组负责改进和维护;他们是全球一些技术精湛的志愿技术人员,他们的劳动是无偿的,在此我们应该向他们表示崇高的敬意。 Openssl最早的版本在1995年发布,1998年开始由Openssl项目组维护; 当前最新版本为OpenSSL1.0.1;...

weixin_34346099的博客 633

用C++编译 Openssl Engine及分享一个Openssl Engine框架

本模板程序定义了实现openssl ENGINE的Engine框架。 实现的基本思路是要通过Engine来替换openssl原来的 ASE-CBC算法和MD5算法。 本程序定义了必须实现的接口。用户只需要根据程序中 的说明,实现相应的接口即可。 实现ENGINE的时候,可以使用CSP。P11或者算法实现的API等。 本模板支持Linux、Windows 、Mac。兼容:openssl1.0和.0.9.8 如果在使用过程中有任何问题。 在windows上编译,使用vc2005或vc2008 在linux下,请运行 make

win32 openssl 库文件和头文件,编译完成的

Win32 openssl函数库及其头文件,这个是编译好的可以直接用,我的CSDN里面还有AES加解密和RC4加解密的使用例子。

Openssl源代码整理学习---含P7/P10/P12说明

声明:建议结合Openssl源代码学习; 一、基础知识 1.Openssl简史 OpenSSL项目是加拿大人EricA.Yang和TimJ.Hudson开发,现在有Openssl项目小组负责改进和维护;他们是全球一些技术精湛的志愿技术人员,他们的劳动是无偿的,在此我们应该向他们表示崇高的敬意。 Openssl最早的版本在1995年发布,1998年开始由Openssl项目组维护; ...

weixin_34075268的博客 996

openssl3.2 - 官方demo学习 - pkcs12 - pkwrite.c

openssl3.2 - 官方demo学习 - 索引贴上次PKCS12的官方实验还没做, 原因是没在官方demo中看到如何生成P12的证书, 因为P12是受密码保护的, 如果不知道密码, 随便拿来一个.P12证书, 用编程也操作不了.整理了官方帮助文件(openssl3.2 - 帮助文档的整理)后, 很容易就找到了官方说明, 如何用openssl命令行去生成P12证书的全流程操作.今天拿官方demo pkwrite.c + 自己做的服务器证书来做实验, 学到东西了.

博客标题不能为空 2140

OpenSSL编译说明:Linux结合libcurl库编程实现人脸识别和车牌识别_linux车牌识别

● 要通过libcurl库实现人脸识别,就需要libcurl库支持https协议。在上一篇文章中介绍了通过libcurl库来访问百度网页,只是基于http协议。● 要让libcurl库支持https协议实现人脸识别,就需要安装openssl这个库。● http与https:简言之,https比http多了加密协议,具体体现后面会说明。● 此篇人脸识别介绍主要目的是判断两张人脸图片的相似程度或者接近程度。

2401_84182906的博客 913

openssl简易文档

一:编译 前置工作: 1.下载openssl.网址:http://www.openssl.org/source/ 2.解压缩. 3.下载activeperl,并安装. 编译: 用vs2005编译,编译之前要先根据配置生成makefile,具体为下面a,b,c三步: a.C:/OpenSSL/openssl-0.9.8>Perl Configure VC-WIN32 b.C:

TCP/IP 8559

openssl官网文档资料

openssl资料查找

MashiMaroJ的专栏 3485
上一篇: 学习CRYPTO
下一篇: 程序设计超级经典书籍
jun2ran
博客等级 码龄18年 101粉丝 183原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值