ESP32 - SHA256 HMAC 실행 예제

ESPRESSIF|2023. 3. 31. 15:47

 ESP32 IDF를 이용하여 SHA256 HMAC을 실행하는 예제 코드입니다.

이 예제는 ESP-IDF의 mbedtls 라이브러리를 사용하여 SHA256 HMAC을 계산합니다.

 

예제 코드는 "my-secret-key"라는 키와 "hello world"라는 메시지를 사용하여 SHA256 HMAC을 계산합니다.

출력 결과는 32바이트(256비트)의 SHA256 HMAC 값입니다.

이 코드를 ESP32 IDF에서 실행하면 SHA256 HMAC을 계산할 수 있습니다.

#include <stdio.h>
#include <string.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "mbedtls/md.h"
#include "mbedtls/md_internal.h"

void sha256_hmac(const char *key, const char *message, unsigned char *output)
{
    mbedtls_md_context_t ctx;
    const mbedtls_md_info_t *info_sha256;
    mbedtls_md_init(&ctx);
    info_sha256 = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256);
    mbedtls_md_setup(&ctx, info_sha256, 1);
    mbedtls_md_hmac_starts(&ctx, (const unsigned char *)key, strlen(key));
    mbedtls_md_hmac_update(&ctx, (const unsigned char *)message, strlen(message));
    mbedtls_md_hmac_finish(&ctx, output);
    mbedtls_md_free(&ctx);
}

void app_main()
{
    char key[] = "my-secret-key";
    char message[] = "hello world";
    unsigned char output[32];

    sha256_hmac(key, message, output);

    printf("Key: %s\n", key);
    printf("Message: %s\n", message);
    printf("SHA256 HMAC: ");
    for (int i = 0; i < 32; i++) {
        printf("%02x", output[i]);
    }
    printf("\n");
}