提供了两种方法:
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "string.h"
#include "crypto/md5.h"
// 如果是idf4,应使用#include "esp32/rom/md5_hash.h"
#include "rom/md5_hash.h"
#include "esp_system.h"
#include "mbedtls/aes.h"
#include "mbedtls/md5.h"
int i, ret = 0;
unsigned char mbedtls_md5sum[16];
unsigned char content[] = "admin";
void md5_test(unsigned char *content) {
struct MD5Context md5;
MD5Init(&md5);
unsigned char hash[17]="";
MD5Update(&md5, content, strlen((const char *)content));
MD5Final(hash,&md5);
printf("\r\n************** MD5 Digest*******************\r\n");
for (i = 0; i < 17; i++)
{
printf("%02x",hash[i]);
}
}
void mbed_tls_md5(unsigned char *content,unsigned char *mbedtls_md5sum)
{
ret = mbedtls_md5_ret(content, strlen((const char *)content), mbedtls_md5sum);
if( ret != 0 )
printf( "mbedtls_md5_ret() failed\n" );
else
{
printf("\r\n************ mbedtls_md5_ret result ****************\r\n");
for (i = 0; i < 16;i++)
{
printf("%02x", mbedtls_md5sum[i]);
}
}
}
void app_main()
{
md5_test(content);
mbed_tls_md5(content, mbedtls_md5sum);
printf("\r\n************* END **************");
fflush(stdout);
}
附:
MD5/Hmac_MD5在线计算:
(在线散列/哈希算法加密工具 - 密码工具箱 - 脚本之家在线工具)