es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Diferentes hashes MD5 con mbedtls y openssl.

Estoy tratando de obtener el hash MD5 con mbedtls utilizando este código:

#include “mbedtls/base64.h”
#include “mbedtls/md5.h”
#include “string.h”
#include <stdio.h>

void app_main() {
unsigned char hash_source[] = “This is a test..”;
size_t hash_source_len = sizeof(hash_source);
unsigned char hash_destination[16];
size_t hash_destination_len = 16;
unsigned char base64_md5[25];

mbedtls_md5_context md5_ctx;

mbedtls_md5_init(&md5_ctx);
mbedtls_md5_starts_ret(&md5_ctx);
mbedtls_md5_update_ret(&md5_ctx, hash_source, hash_source_len);
mbedtls_md5_finish_ret(&md5_ctx, hash_destination);
mbedtls_md5_free(&md5_ctx);

size_t base_md5len = 0;
mbedtls_base64_encode(base64_md5, 25, &base_md5len, hash_destination,
hash_destination_len);
printf(“base md5: %s (%d)\n”, base64_md5,
base_md5len); // <- base md5: 62mujHCdeZzR5CkMIruNNQ== (24)
}

Devuelve 62mujHCdeZzR5CkMIruNNQ== como hash MD5 en base64 para la entrada “This is a test..”, pero el resto del mundo devuelve A3veNGT6JuskB2Flv+cPpg== como hash MD5 para la misma entrada, por ejemplo en Node.JS:

import crypto from “crypto”;

console.log(
“md5 base64:”,
crypto.createHash(“md5”).update(“This is a test..”).digest(“base64”)
); // <- md5 base64: A3veNGT6JuskB2Flv+cPpg==

o en OpenSSL:

echo -n “This is a test..” | openssl dgst -md5 -binary | openssl enc -base64
A3veNGT6JuskB2Flv+cPpg==

¿Por qué podría ser? ¿Y cómo puedo recibir el hash MD5 “normal” en mbedtls? ¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que obtiene diferentes hashes MD5 al usar mbedtls en comparación con otras bibliotecas como Node.JS y OpenSSL. Esto podría deberse a la forma en que las bibliotecas codifican los datos antes de codificarlos. Para obtener el mismo hash MD5 que otras bibliotecas, es posible que deba asegurarse de que los datos se codifiquen de la misma manera antes de codificarlos con mbedtls.

Comments are closed.