OpenSSL 简介

来源:互联网 发布:阿里云的图标 编辑:程序博客网 时间:2024/06/06 03:59

ref:
https://www.openssl.org/
http://www.cnblogs.com/LittleHann/p/3741907.html

OpenSSL是一个功能丰富且自包含的开源安全工具箱。

OpenSSL组成

OpenSSL由3部分组成:
1. The SSL library(SSL、TLS开发代码库)
2. the Crypto library(密码学相关开发代码库)
3. command line tool(命令行工具,提供CA、证书等功能)

The SSL library(SSL、TLS开发代码库)

SSL、TLS是一个网络数据协议,所以我们使用OPENSSL开发程序的目的同样也是基于网络的应用程序,即C/S程序,所以,一般情况下,我们需要同时编写服务端、以及客户端程序。
服务端编写步骤:
这里写图片描述

客户端编写步骤:
这里写图片描述

the Crypto library(密码学相关开发代码库)

RSA算法

RSA是基于数论中大素数的乘积难分解理论上的非对称加密法。
其密钥包括公钥和私钥。它能用于数字签名、身份认证以及密钥交换。
具体的密钥生成算法如下:
1. 随机选择两个大素数p和q(比如每个都是1024 bit);
2. 计算n = pq, n’ = (p-1)(q-1).;
3. 选择一个e (e小于n) 与n’互质;
4. 计算d使得ed = 1 mod n’;
5. 则公钥为(n, e),私钥为(n, d). 注意p和q都应该保密。

加密过程为c = m^e mod n
解密过程为m = c^d mod n

RSA算法中,公钥、私钥的加解密是对称的

在实际应用中,公钥加密一般用来协商密钥,私钥加密一般用来签名。

#include <openssl/rsa.h>

DSA签名与验证

在DSA数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥来验证签名的真实性.

#include <openssl/dsa.h>

MD5哈希散列生成摘要

摘要函数用于将任意数据通过计算获取唯一对应值,而这个值的长度比较短。
常用摘要算法有:sha、sha1、sha256以及md5等。其他还有md4、md2、mdc2以及ripemd160等。

#include <openssl/md5.h>

0 0
原创粉丝点击