Basicamente, não possui nenhum bit de soma de verificação. Para identificar um erro de digitação, você pode tentar compartilhar uma soma de verificação (por exemplo, MD5) da sua soma MD5 no mesmo canal e verificá-la.
As somas de verificação MD5 contêm um checkbit?
Eu tenho que copiar alguns checksums MD5 manualmente (não há outro jeito) e queria saber se existe algum código lá fora que possa validar um checksum como sendo válido da mesma forma que se pode validar um número de cartão de crédito.
Só para esclarecer, não estou perguntando como gerar uma soma MD5 de um arquivo para que eu possa compará-lo com a soma que recebi, estou perguntando se é possível (e duvido que seja ) para validar que uma soma MD5 é uma soma MD5 genuína sem realmente fazer qualquer referência aos bytes que foram usados para gerar a soma.
Eu quero identificar um possível erro de digitação.
É, na verdade, uma conseqüência dos critérios de projeto de um hash criptográfico (que o MD5 pretendia ser) que não seja uma coisa dessas.
Quando você alimenta um arquivo em um hash criptográfico de 128 bits ideal, você pode não prever qualquer dos 128 bits de saída (ou a relação deles um com o outro) além de executar o hash. Se você puder, você não está recebendo um hash de 128 bits. Por exemplo, se o hash tiver um bit de paridade (um bit de forma que o número total de 1s seja sempre ímpar [paridade ímpar] ou sempre par [par]], você terá um hash de 127 bits.
E, para garantir que você não gere acidentalmente um hash válido por erro de digitação, você precisará de uma chance melhor que 50/50 de detectá-lo. Então você perderia mais pedaços.
O problema é que você queria um hash de 128 bits por um motivo: um bit extra geralmente dobra o trabalho necessário para atacar o hash.
Se a redundância é parte do design pretendido pelo hash, então ela seria chamada de hash de 124 bits, com 4 bits de CRC (etc.). Se o não foi planejado, então é realmente uma criptoanálise parcial (quebra) do hash.
Como você quer pegar erros de digitação, basta adicionar qualquer soma de verificação ou dígito de verificação e anotá-la ao lado. Você poderia usar algo como Algorithm :: Verhoeff do perl para adicionar um dígito de verificação.
A soma de verificação MD5 em si é uma soma de verificação. Seria estranho ter a soma de verificação com seu próprio checksum / checkbit.
Qualquer soma aleatória que corresponda ao único critério é que 16 bytes podem ser uma soma de verificação MD5. Esses 16 bytes podem ser representados como 32 dígitos hexadecimais, 128 bits ou o que você quiser.