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值的长度
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值