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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章