一、安全散列算法(SHA)简介
安全散列算法(Secure Hash Algorithm,简称SHA)是美国国家安全局(NSA)研发的一种密码散列函数算法标准,由美国国家标准与技术研究院(NIST)认证[3]。SHA系列算法包括SHA-1、SHA-224、SHA-256、SHA-384 和SHA-512 等变体[1]。在本文中,我们将重点介绍FIPS 180-2标准下的SHA-224、SHA-256、SHA-384 和 SHA-512算法,并提供C语言实现的示例代码。
二、SHA-2系列算法原理
SHA-2系列算法(包含SHA-224、SHA-256、SHA-384和SHA-512)是SHA-1算法的变种,用于验证数据完整性[5]。这些算法的主要区别在于输出散列值的长度不同,例如SHA-224输出224位散列值,SHA-256输出256位散列值,以此类推。SHA-2系列算法的安全性相较于SHA-1有显著提升,因此美国政府计划在2010年前改用先进的SHA-224、SHA-256、SHA-384及SHA-512的数字签名加密算法[2]。
三、C语言实现SHA-2系列算法
以下是SHA-256算法的C语言实现示例代码:
c复制代码#include <stdio.h>
#include <stdint.h>
#include <string.h>void sha256(const uint8_t *data, size_t len, uint8_t *digest);int main() {const char *data = "Hello, world!";uint8_