15.openssl编程——摘要与HMAC

15.1 概述
摘要函数用于将任意数据通过计算获取唯一对应值,而这个值的长度比较短。他是一种多对一关系。用户需要对数据进行签名时,不可能对大的数据进行运算。如果只对摘要结果进行计算,则会提供运算速度。常用摘要算法有:sha\sha1\sha256\md5\md4\md2\mdc2或ripemd160
 
15.2 openssl摘要实现
openssl摘要实现的源码位于crypto目录下的各个子目录下,
*crypto/ripend
*crypto/md2
*crypto/mdc2
*crypto/md4
*crypto/md5
*crypto/sha
*crypto/sha1
*crypto/sha256
*crypto/sha512
 
15.3 函数说明
所有的摘要算法都有如下几个函数
a.XXX_Init
该函数初始化上下文,用于多数据摘要
b.XXX_update
进行摘要计算,该函数可运行多次,对多个数据摘要
c.XXX_Final
进行摘要计算,该函数与a和b一起使用
d.XXX
对一个数据进行摘要。只是用XXX_Update只调用一次。
 
 
15.4 HMAC
HMAC用于保护消息的完整性,他采用摘要算法对消息、填充以及秘密密钥进行混合运算。在消息传输时,用户不仅传送消息本身,还传送HMAC值。接收方数据后也进行HMAC运算,再比对MAC值是否一致。由于秘密密钥只有发送方和接收才有,其他人不可能伪造假的HMAC值,从而能够知道消息是否被串改。
unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
const unsigned char *d, size_t n, unsigned char *md,
unsigned int *md_len)
evp_md 指明HMAC使用的摘要算法
key为秘密密钥指针地址
key_len为秘密密钥的长度
d为需要做HMAC运算的数据指针地址
n为d的长度
md用于存放HMAC值
md_len为HMAC值的长度
posted @ 2018-01-19 12:46  艾小小雨  阅读(1647)  评论(0编辑  收藏  举报