SHA HMAC 和SHA3(基于Keccak)加密算法测试代码(C语言版)
安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的*标准。后四者有时并称为SHA-2。
https://en.wikipedia.org/wiki/Secure_Hash_Algorithms
SHA-HMAC跟其它SHA家族算法区别在于加了多加了一个私有密匙,使得在安全领域上更可靠
测试环境
系统:Ubuntu14
编译环境:Linux GCC
以下是几个测试例子,其它类似,后面附上源码
测试一:SHA1-HMAC
第一步:在include/config.h文件下打开SHA1-HMAC相关宏定义
#ifndef __CONFIG_H_
#define __CONFIG_H_
//宏定义选择算法开关,用到哪种算法,就打开该算法的宏定义,没用到的注释掉宏定义,否则出错
/************************************HMAC相关加密算法宏定义*************************************/
#define SHA_1
//#define SHA_224
//#define SHA_256
//#define SHA_384
//#define SHA_512 //HMAC SHA512又有五种,根据需要选择如下其中一种
#ifdef SHA_512
//五选一
//#define HMAC512
//#define HMAC512_128
//#define HMAC512_192
//#define HMAC512_224
//#define HMAC512_256
#endif
/***********************************************************************************/
/************************************************************************************
* Keccak interface. This is the interface for Keccak with the
* recommended parameters for SHA-3, with output lengths 224, 256,
* 384 and 512 bits.
************************************************************************************/
//宏定义选择算法开关,用到哪种算法,就打开该算法的宏定义,没用到的注释掉宏定义,否则出错
//#define SHA3_224
//#define SHA3_256
//#define SHA3_384
//#define SHA3_512
#ifdef SHA3_224
#define SHA3
#endif
#ifdef SHA3_256
#define SHA3
#endif
#ifdef SHA3_384
#define SHA3
#endif
#ifdef SHA3_512
#define SHA3
#endif
#define DEBUG // 打开调试信息输出的开关
// debug宏的定义
#ifdef DEBUG
#define debug(...) \
{ \
fprintf(stderr, "[debug][%s:%s:%d] ", \
__FILE__, __FUNCTION__, __LINE__); \
fprintf(stderr, __VA_ARGS__); \
}
#else
#define debug(...)
#endif
#endif
第二步:在input/message digest.txt ----->该文件用于存放消息摘要,也就是加密的明文
第三步:在input/key.txt ----->该文件用于存放加密的密匙,只有HMAC相关加密算法才会用到
第三行输入密匙
第四步:实验测试
SHA-HMAC测试网址https://www.freeformatter.com/hmac-generator.html
用其它网站在线测试,注意文本格式是否一致
测试二:SHA224-HMAC
第一步:在include/config.h文件下打开SHA1-HMAC相关宏定义
参考测试一更改
第二步:在input/message digest.txt ----->该文件用于存放消息摘要,也就是加密的明文
参考测试一更改
第三步:在input/key.txt ----->该文件用于存放加密的密匙,只有HMAC相关加密算法才会用到
第三行输入密匙
第四步:实验测试
测试三:SHA3-224
第一步:在include/config.h文件下打开SHA3-224相关宏定义
参考测试一更改
第二步:在input/message digest.txt ----->该文件用于存放消息摘要,也就是加密的明文
参考测试一更改
第三步:实验测试
SHA3在线测试网址:http://www.atool.org/hash.php
测试四:------------
测试五:------------
注意:每次测试都需要重新编译源程序
make 编译链接程序
make clean 可清除编译链接生成的文件
具体可查看makefile文件查看规则
下载源代码:https://download.csdn.net/download/baidu_34919559/10469413
上一篇: 你们是否已经放弃了外链建设