MD5 é um algoritmo amplamente utilizado para computar resumos de dados (mensagens). O algoritmo MD5 gera um valor de hash de 128 bits (16 bytes) (valor de hash), geralmente expresso na forma de 32 números hexadecimais. O algoritmo MD5 tem as seguintes características:
1. Facilidade de cálculo: dados (mensagens) de comprimento arbitrário podem ser processados e a velocidade de cálculo é muito rápida.
2. Irreversibilidade: Qualquer operação baseada no algoritmo MD5 para gerar um valor hash é irreversível, ou seja, o conteúdo dos dados originais não pode ser revertido do valor hash.
3. Pequena probabilidade de colisão: Em comparação com o comprimento dos dados e as características do próprio algoritmo MD5, a probabilidade de colisão do algoritmo MD5 (isto é, dados diferentes geram o mesmo valor de hash) é muito pequena.
O algoritmo MD5 é amplamente utilizado em áreas como criptografia, verificação de integridade de dados e assinatura digital. No entanto, o algoritmo MD5 foi considerado um algoritmo inseguro devido a várias brechas e fraquezas, por isso foi substituído por algoritmos mais seguros em aplicações práticas, como SHA-2, SHA-3, etc.
A seguir, um exemplo de código para gerar MD5 usando a linguagem C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/md5.h>
int main() {
char *data = "Hello world!"; // 需要计算 MD5 的数据
unsigned char c[MD5_DIGEST_LENGTH]; // 存储 MD5 结果的数组
char buf[MD5_DIGEST_LENGTH*2]; // 存储 MD5 结果的字符串
MD5((unsigned char *)data, strlen(data), c); // 计算 MD5,存储到 c 数组中
for (int i = 0; i &l