Sha Hash für Strings mit C#

Vor einiger Zeit hab ich bereits gezeigt wie man SHA Hasehs eines Strings mit Java generiert. Nun möchte ich aber der .Net Gemeinde nichts vorenthalten, und möchte euch nun eine Möglichkeit ziegen wie man das selbe Problem mit C# löst.

Seit dem letzten Artikel, hat sich nicht allzu viel geändert. MD5 und SHA1 gelten weiterhin als nicht mehr sicher. Aus diesem Grund möchte ich mich nun auch auf eine Implementierung der SHA-256 Variante stürzen.

Die nun folgende Funktion generiert aus dem Text "Create my hash" einen SHA-256 Hash Wert. Dieser wird anschließend auf der Konsole ausgegeben.

  1. public static void GetHashForString()
  2. {
  3. const string value = "Create my hash";
  4.  
  5. var sha = new SHA256CryptoServiceProvider();
  6.  
  7. string result = null;
  8.  
  9. byte[] arrayData = Encoding.ASCII.GetBytes(value);
  10. byte[] arrayResult = sha.ComputeHash(arrayData);
  11.  
  12. foreach (byte t in arrayResult)
  13. {
  14. var temp = Convert.ToString(t, 16);
  15. if (temp.Length == 1)
  16. temp = "0" + temp;
  17.  
  18. result += temp;
  19. }
  20.  
  21. Console.Out.WriteLine(result);
  22. }

Der Hashwert für diesen Text sollte, genau wie bei der Java Variante,
868091a71d8126681e45c6aa7816e390f5607f4b97d65cf69e3fc7b07436b8fe
sein. Wenn das nicht der Fall ist, ist wohl etwas schief gelaufen...

Auch in C# haben wir die Möglichkeit andere SHA Implementierungen zu benutzen. Die Art des Algorithmus wird durch den CryptoServiceProvider bestimmt.
Als Alternativen zum SHA-256 haben wir noch

  • SHA1CryptoServiceProvider
  • SHA384CryptoServiceProvider
  • SHA512CryptoServiceProvider

Wie schon gesagt, gilt die SHA1 Variante nicht mehr als sicher und sollte nicht mehr genutzt werden!

Um nun einen der oben genannten Alternativen zu verwenden muss nur der CryptoServiceProvider in der Zeile

  1. var sha = new SHA256CryptoServiceProvider();

geändert werden.

Neuen Kommentar schreiben