SHA256#

K210 有一个硬件 SHA256 计算模块

begin#

描述#

设置要计算的数据总长度

语法#

static void begin(size_t dataLen);

参数#

  • dataLen 数据总长度

返回值#

示例说明#

SHA256::begin(30);

end#

描述#

关闭 SHA256 模块

语法#

static void end();

参数#

返回值#

示例说明#

SHA256::end();

update#

描述#

计算指定长度的数据

语法#

static void update(const void *input, size_t len);

参数#

  • input 输入的数据

  • len 数据长度

返回值#

示例说明#

uint8_t data[] = "012345678901234567890123456789";
SHA256::update(data, 30);

digest#

描述#

获取计算过数据的 SHA256 校验值

语法#

static void digest(uint8_t *sha256);

参数#

  • sha256 获取校验值,长度 32 字节

返回值#

示例说明#

uint8_t sha256[32];
SHA256::digest(sha256);

例程 - sha256_test.ino#

SHA256计算测试

以下是一个SHA256哈希函数测试程序,它通过计算输入数据的SHA256哈希值来验证SHA256库的正确性。

在该程序中,我们首先声明了一个存储哈希结果的数组和一个包含测试数据的数组,并使用Serial.begin()函数初始化串口通信。然后,我们调用SHA256::begin()函数初始化哈希计算器、SHA256::update()函数将测试数据添加到计算器中、SHA256::digest()函数计算哈希值以及SHA256::end()函数结束哈希计算。最后,我们使用Serial.printf()函数将哈希结果输出到串行端口。

需要注意的是,SHA256哈希函数是一种加密安全算法,因此在实际应用中需要采取相应的保护措施,比如将敏感信息进行加密处理,避免泄露。另外,在使用SHA256库时,需要根据具体情况确定输入数据长度并进行相应的填充操作。

#include "Arduino.h" // 引入Arduino库

#include "SHA256.h" // 引入SHA256库

using namespace K210; // 使用K210命名空间

void setup() // 初始化函数
{
    uint8_t sha256[32]; // 定义SHA256哈希值数组
    uint8_t data[] = "012345678901234567890123456789"; // 定义待哈希数据

    Serial.begin(115200); // 初始化串口通信
    while (!Serial) { // 等待串口连接
        ;
    }

    Serial.printf("Sha256 Test\n"); // 输出测试信息

    SHA256::begin(30); // 初始化SHA256哈希函数
    SHA256::update(data, 30); // 更新哈希值
    SHA256::digest(sha256); // 计算哈希值
    SHA256::end(); // 结束哈希函数

    /* 276FADFC9EDC49F5F9AF96D97636731DEF7525D4BFA16BC07699534873A474CC */
    Serial.printf("sha256:"); // 输出哈希值
    for(int i = 0; i < 32; i++) { // 循环输出哈希值
        Serial.printf("%02X", sha256[i]); // 输出哈希值
    }
    Serial.printf("\r\n"); // 换行
}

void loop() // 循环函数
{

}