ref: https://www.openssl.org/ http://www.cnblogs.com/LittleHann/p/3741907.html
OpenSSL是一个功能丰富且自包含的开源安全工具箱。
OpenSSL由3部分组成: 1. The SSL library(SSL、TLS开发代码库) 2. the Crypto library(密码学相关开发代码库) 3. command line tool(命令行工具,提供CA、证书等功能)
SSL、TLS是一个网络数据协议,所以我们使用OPENSSL开发程序的目的同样也是基于网络的应用程序,即C/S程序,所以,一般情况下,我们需要同时编写服务端、以及客户端程序。 服务端编写步骤:
客户端编写步骤:
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数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥来验证签名的真实性.
#include <openssl/dsa.h>
摘要函数用于将任意数据通过计算获取唯一对应值,而这个值的长度比较短。 常用摘要算法有:sha、sha1、sha256以及md5等。其他还有md4、md2、mdc2以及ripemd160等。
#include <openssl/md5.h>
