Hashing data
There are multiple hash algorithms you can choose from in .NET. Some do not use any key, some use symmetric keys, and some use asymmetric keys.
There are two important factors to consider when choosing a hash algorithm:
Collision resistance: How rare is it to find two inputs that share the same hash?
Preimage resistance: For a hash, how difficult would it be to find another input that shares the same hash?
Here are some common hashing algorithms:
Algorithm |
Hash size |
Description |
---|---|---|
MD5 |
16 bytes |
This is commonly used because it is fast, but it is not collision resistant. |
SHA1, SHA256, SHA384, SHA512 |
20 bytes, 32 bytes, 48 bytes, 64 bytes |
These are Secure Hashing Algorithm 2nd generation algorithms (SHA2) with different hash sizes. The use of SHA1 on the Internet has been deprecated since 2011. |
Note
Best Practice
Avoid MD5 and SHA1 because they have known weaknesses. Choose a larger hash size to improve collision and preimage resistance.
Hashing with SHA256
In the Ch11_Cryptography...