欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SHA HMAC 和SHA3(基于Keccak)加密算法测试代码(C语言版)

程序员文章站 2022-05-12 22:17:42
...

安全散列算法(英语: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 ----->该文件用于存放消息摘要,也就是加密的明文

SHA HMAC 和SHA3(基于Keccak)加密算法测试代码(C语言版)

第三步:在input/key.txt  ----->该文件用于存放加密的密匙,只有HMAC相关加密算法才会用到

第三行输入密匙

SHA HMAC 和SHA3(基于Keccak)加密算法测试代码(C语言版)

第四步:实验测试

SHA HMAC 和SHA3(基于Keccak)加密算法测试代码(C语言版)

SHA HMAC 和SHA3(基于Keccak)加密算法测试代码(C语言版)

SHA-HMAC测试网址https://www.freeformatter.com/hmac-generator.html

用其它网站在线测试,注意文本格式是否一致

测试二:SHA224-HMAC

第一步:在include/config.h文件下打开SHA1-HMAC相关宏定义

参考测试一更改

第二步:在input/message digest.txt ----->该文件用于存放消息摘要,也就是加密的明文

参考测试一更改

第三步:在input/key.txt  ----->该文件用于存放加密的密匙,只有HMAC相关加密算法才会用到

第三行输入密匙

第四步:实验测试

SHA HMAC 和SHA3(基于Keccak)加密算法测试代码(C语言版)

SHA HMAC 和SHA3(基于Keccak)加密算法测试代码(C语言版)

测试三:SHA3-224

第一步:在include/config.h文件下打开SHA3-224相关宏定义

参考测试一更改

第二步:在input/message digest.txt ----->该文件用于存放消息摘要,也就是加密的明文

参考测试一更改

第三步:实验测试

SHA HMAC 和SHA3(基于Keccak)加密算法测试代码(C语言版)

SHA HMAC 和SHA3(基于Keccak)加密算法测试代码(C语言版)

SHA3在线测试网址:http://www.atool.org/hash.php

测试四:------------

测试五:------------


注意:每次测试都需要重新编译源程序

make 编译链接程序

make clean 可清除编译链接生成的文件

具体可查看makefile文件查看规则

下载源代码:https://download.csdn.net/download/baidu_34919559/10469413