Existe uma classe de algoritmos de hash, teóricos ou práticos, de modo que um algoritmo na classe possa ser considerado 'reflexivo' de acordo com uma definição dada abaixo:
- hash1 = algo1 ("texto de entrada 1")
- hash1 = algo1 ("texto de entrada 1" + hash1)
O operador + pode ser concatenação ou qualquer outra operação especificada para combinar a saída (hash1) de volta na entrada ("texto de entrada 1") para que o algoritmo (algo1) produza exatamente o mesmo resultado. ou seja, colisão na entrada e entrada + saída. O operador + deve combinar a totalidade de ambas as entradas e o algo não pode descartar parte da entrada.
O algoritmo deve produzir alta entropia na saída. Pode, mas não precisa, ser criptograficamente difícil reverter a saída de volta para uma ou ambas as entradas possíveis.
Eu não sou um matemático, mas uma boa resposta pode incluir uma prova de por que essa classe de algoritmos não pode existir. Esta não é uma questão abstrata, no entanto. Estou genuinamente interessado em usar esse algoritmo no meu sistema, se houver.
Esta é uma duplicata de uma pergunta que foi publicada pela primeira vez em /programming/4823680/reflexive-hash
fonte
Respostas:
Dou uma construção trivial que satisfaz a exigência. Forneci-o para responder meramente à existência da função hash "reflexiva".
Como eu disse, essa é uma construção trivial. Pode ser aplicado a qualquer função hash, prática (como MD5, SHA-1, ...) ou teórica.
fonte