摘要: 30.1 概述 pkcs12(个人数字标准)用于存放用户证书、crl、用户私钥以及证书链,pkcs12中的私钥是加密存放的。 30.2 openssl实现 openssl的pkcs12实现在crypto/pkcs12目录,有如下源码: 目录架构用途p12_add.c处理PCKS12_SAFEBAG, 阅读全文
posted @ 2018-01-25 17:08 艾小小雨 阅读(1138) 评论(0) 推荐(0) 编辑
摘要: 28.1 CRL介绍 证书撤销列表(Certificate Revocation List, 简称CRL),是液体中包含撤销的证书列表的签名数据结构。CRL是证书撤销状态的公布形式,CRL就像信用卡的黑名单,用于公布某些数字证书不在有效。 CRL是一种离线的证书状态信息。他一一定的周期进行更新。CR 阅读全文
posted @ 2018-01-25 17:07 艾小小雨 阅读(654) 评论(0) 推荐(0) 编辑
摘要: 29.1 概述 加密消息语法(pkcs7),是各种消息存放的格式标准。这些消息包括:数据、签名数据、数字信封、签名数据数字信封、摘要数据和加密数据。 29.2 数据结构 typedef struct pkcs7_signed_st { ASN1_INTEGETR *version; STACK_OF 阅读全文
posted @ 2018-01-25 17:07 艾小小雨 阅读(3970) 评论(0) 推荐(0) 编辑
摘要: 26.1 X509数字证书 数字证书是将用户(或其他实体)身份与公钥绑定的信息载体。一个合法的数字证书不仅要符合X509格式规范,还必须有CA的签名。用户不仅有自己的数字证书,还必须有对应的私钥。 X509V3数字证书主要包含的内容有: a.证书版本 b.证书序列号 c.签名算法 d.颁发者信息 e 阅读全文
posted @ 2018-01-25 17:06 艾小小雨 阅读(1613) 评论(0) 推荐(0) 编辑
摘要: 25.1 证书申请介绍 生成X509数字证书前,一般先由用户提交证书申请文件,然后由CA来签发证书。 a.用户生成自己的公私钥对 b.构造自己的证书申请文件,符合PKCS#10标准。该文件主要包括了用户信息、公钥以及一些可选的属性信息,并用自己的私钥给改内容签名 c.用户将证书申请文件提交给CA d 阅读全文
posted @ 2018-01-25 17:04 艾小小雨 阅读(768) 评论(0) 推荐(0) 编辑
摘要: 22.1 PEM概述 openssl使用PEM(Privacy Enhanced Mail)格式来存放各种信息,他是openssl默认采用信息方式。openssl中PEM文件一般包含如下信息: a.内容类型 表明本文件存放的是什么信息内容,他的形式为" BEGIN XXXX ",与结尾的" END 阅读全文
posted @ 2018-01-25 17:03 艾小小雨 阅读(1620) 评论(0) 推荐(0) 编辑
摘要: 23.1 Engine openssl硬件引擎(Engine)能够使用户比较容易地将自己的硬件加入到openssl中去,替换提供的软算法。一个Engine提供了密码计算中各种计算方法的集合,他用于控制opnessl的各种密码计算 23.2 Engine支持的原理 Openssl中的许多数据结构不仅包 阅读全文
posted @ 2018-01-25 17:03 艾小小雨 阅读(4362) 评论(0) 推荐(0) 编辑
摘要: 24.1 通用数据结构 本文中数据结构主要指的是证书相关各个数据结构。他们主要用在数字证书申请、数字证书和CRL中。 *X509_ALGOR X509算法 *X509_VAL X509有效时间 *X509_PUBKEY X509公钥 *X509_SIG X509摘要或者签名值 *X509_NAME_ 阅读全文
posted @ 2018-01-24 16:52 艾小小雨 阅读(2273) 评论(1) 推荐(0) 编辑
摘要: 21.1 EVP简介 Openssl EVP (high-level cryptographic functions)提供丰富的密码学中的各种函数。 EVP主要封装如下功能函数: a.实现了base64编解码BIO b.实现了加解密BIO c.实现了摘要BIO d.实现了reliableBIO; e 阅读全文
posted @ 2018-01-23 21:37 艾小小雨 阅读(1720) 评论(0) 推荐(0) 编辑
摘要: 20.1 ECC介绍 椭圆曲线(ECC)算法一种公钥算法,他比流行的RSA算法很多优点: a.安全性能更高,如果160位ECC与1024位RSA、DSA有相同的安全强度 b.计算量小,处理速度快,在私钥的处理速度上(解密和签名),ECC比RSA、DSA快得多 c.存储空间占用小、ECC的密钥尺寸和系 阅读全文
posted @ 2018-01-19 12:50 艾小小雨 阅读(2040) 评论(0) 推荐(0) 编辑
摘要: 18.1 DSA简介 Digital Signature Algorithm(DSA)算法是一种公钥算法。 a.p一个大素数,长度为L(64的正数倍)比特。 b.q一个160比特素数 c.g=h(p-1)/q mod p,其中h小于p-1。 d.x<q e.y= gx mod p 其中x为私钥,y为 阅读全文
posted @ 2018-01-19 12:49 艾小小雨 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 19.1 DH算法介绍 DH算法实质是一个通信双方进行密钥协商的协议:两个实体中的任何一个使用自己的私钥和另一个实体的公钥,得到一个对称密钥,这一对称密钥其他实体都计算不出来。 首先,发送方和接收方设置相同的大数数n和g,这两个不是保密的,他们可以通过非安全通道来协商这两个素数。 协商密钥: a.发 阅读全文
posted @ 2018-01-19 12:49 艾小小雨 阅读(1142) 评论(0) 推荐(0) 编辑
摘要: 17.1 RSA介绍 RSA算法是一个广泛使用的公钥算法。器密钥包括公钥和私钥。他能用于数字签名、身份认证以及密钥交换。RSA密钥信息主要包括: * n:模数 * e:公钥指数 * d:私钥指数 * p:最初的大素数 * q:最初的大素数 * dmp1:e * dmp1 = 1 (mod(p-1)) 阅读全文
posted @ 2018-01-19 12:48 艾小小雨 阅读(1368) 评论(0) 推荐(0) 编辑
摘要: 16.1 简介 数据压缩是将原有数据通过某种压缩算法计算得到相对数据量小的过程。这种过程是可逆的,即能通过压缩后的数据恢复出原数据。数据压缩能够节省存储空间,减轻网络负载。 在即需要加密又需要压缩的情况下,必须先压缩在加密,次序不能颠倒。 16.2 数据结构 openssl通过函数地址来抽象数据压缩 阅读全文
posted @ 2018-01-19 12:47 艾小小雨 阅读(774) 评论(0) 推荐(0) 编辑
摘要: 15.1 概述 摘要函数用于将任意数据通过计算获取唯一对应值,而这个值的长度比较短。他是一种多对一关系。用户需要对数据进行签名时,不可能对大的数据进行运算。如果只对摘要结果进行计算,则会提供运算速度。常用摘要算法有:sha\sha1\sha256\md5\md4\md2\mdc2或ripemd160 阅读全文
posted @ 2018-01-19 12:46 艾小小雨 阅读(1640) 评论(0) 推荐(1) 编辑
摘要: 14.1 概述 程序设计时,一般通过函数的返回值来判断是否调用成功。设计良好的函数以及好的错误处理能版主调用者快速找到错误: *错误码 *出错文件以及行号 *错误原因 *出错函数 *出错库 *出错模块与类别信息 *错误堆栈信息等 14.2 数据结构 openssl中,通过unsgined long 阅读全文
posted @ 2018-01-17 17:33 艾小小雨 阅读(2577) 评论(0) 推荐(0) 编辑
摘要: 13.1 ASN1简介 ANS.1(Abstract Syntax Notation One, X.208),是一套灵活的标记语言,他允许定义多种数据类型,从integer、bit string、一类的简单类型到结构化类型,如set和sequence,并且可以使用这些类型构建复杂类型。 DER编码是 阅读全文
posted @ 2018-01-17 17:32 艾小小雨 阅读(5535) 评论(0) 推荐(0) 编辑
摘要: 12.1 BASE64编码介绍 BASE64编码是一种常用的将十六进制数据转换为可见字符编码。与ASCII码相比,它占用的空间较小。BASE64编码在rfc3548中定义。 12.2 BASE64编解码原理 将数据编码成BASE64编码时,以3字节数据为一组,转换为24bit的二进制,将24bit的 阅读全文
posted @ 2018-01-17 17:30 艾小小雨 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 11.1 介绍 大数一般指的是位数很多的数。计算机表示的数的大小是有限的,精度也是有限的,精度也是有限的,它不能支持大数运算。密码学中采用了很多大数计算,为了让计算机实现大数运算,用户需要定义自己的大数表示方式及实现各种大数运算。Openssl为我们提供了这些功能,主要用于非对称算法。 11.2 o 阅读全文
posted @ 2018-01-17 17:29 艾小小雨 阅读(1154) 评论(0) 推荐(0) 编辑
摘要: 10.1 概述 openssl实现了一个简单的文本数据库,他可以从文件读取数据和将数据写到文件中,兵切可以根据关键字段来查询数据。 10.2 数据结构 typedef struct txt_db_st { int num_fields; 表明文本数据库的列数 STACKP_OF(OPENSSL_PS 阅读全文
posted @ 2018-01-17 17:28 艾小小雨 阅读(446) 评论(0) 推荐(0) 编辑