![]() |
Created by Thiago Russo
about 7 years ago
|
|
Question | Answer |
Exemplo do problema que hashing resolve | |
Exemplo, resolvendo o problema acima com técnica de hashing |
Image:
Hashing Exemplo (image/png)
|
Técnica de buckets (baldes) | Se vc olhar para o método Contains, vc pode ver q ele usa o método GetHashCode de cada item. Este método é definido no objeto de classe base. Em cada tipo, vc pode substituir esse método e fornecer uma implementação específica para o seu tipo. Este método tem como saída um código inteiro que descreve o objeto particular. A título de orientação geral, a distribuição de códigos de hash deve ser tão aleatória quanto possível. É por isso que a implementação Set usa o método GetHashCode em cada objeto para calcular no bucket que está. Agora seus itens são distribuídos mais de cem buckets (baldes) em vez de um único balde. Quando você ver se um item existe, você primeiro calcula o código hash, vá para o balde correspondente, e procure o item. Esta técnica é usada pelas classes Hashtable e Dictionary do .NET Framework. |
Princípios importantes sobre hashing | Itens iguais devem ter códigos de hash iguais: Isso significa q vc pode verificar os hashs p/ ver se 2 itens são iguais. Isso tb significa q sua implementação do GetHashCode deve retornar o mesmo valor. Ele n deve depender de mudança de valores, como a data ou a hora atual. |
Como hash ajuda na segurança? | Se vc fizer o hash d um parágrafo de texto e mudar apenas uma letra, o código hash vai mudar, então hash é usado para verificar a integridade de uma mensagem. Ex: Alice e Bob querem enviar uma mensagem um para o outro. Alice cria um hash da mensagem e envia tanto o hash e a mensagem a Bob. Bob cria um hash da mensagem que recebeu de Alice e compara os dois códigos de hash com o outro. Se forem iguais, Bob sabe que ele recebeu a mensagem correta. Claro, sem ala criptografia adicional, um terceiro pode ainda mexer com a mensagem, alterando tanto a mensagem e o código hash. Combinado com as tecnologias de criptografia que o .NET oferece, hashing é uma técnica importante para validar a autenticidade de uma mensagem. |
Exemplo usando o algorigmo SHA256Managed |
Image:
Hashing Sha256 (image/png)
|
Want to create your own Flashcards for free with GoConqr? Learn more.