ASP.NET

MD5-Hashes mit ASP und ASP.NET erzeugen

Sichere Streuwerte z.B. für Authentifizierung berechnen

Der MD5-Algorithmus (Message Digest Algorithm 5), 1991 von Donald M. Rivest entwickelt, erzeugt aus einem beliebig langen Text einen 128-Bit langen Streuwert (Hash), mit dem dieser eindeutig identifiziert werden kann. Dieser Streuwert wird zumeist als 32-stellige Hexadezimalzahl notiert und ist u.a. sehr weit verbreitet bei der Integritätsprüfung. So speichern z.B. viele Internet-Shops die Zugangspasswörter ihrer Kunden nicht im Klartext in ihrer Datenbank, sondern als MD5-Hash. Loggt sich der Kunde ein, so wird aus seiner Eingabe der MD5-Hash ermittelt und mit dem Gegenstück aus der Datenbank verglichen.

MD5 ist sicher, da zum einen aus einem erzeugten Hash-Wert nicht der Ursprungstext ermittelt werden kann und zum anderen der Algorithmus kollisionsfrei ist bzw. sein soll. Mit kollisionsfrei meint man, dass aus zwei unterschiedlichen Texten niemals der gleiche Hash-Wert berechnet werden kann. MD5 ist dabei etwas ins Gerede geraten, da es chinesischen Mathematikern anscheinend gelungen ist, für die komplette Funktion Kollisionen zu finden. Dies bedeutet jedoch nicht, dass MD5 mit einem Male unsicher ist. Ein paar Jahre und Rechnergenerationen wird es wohl noch dauern, bis der Algorithmus geknackt ist.

Beispiel-MD5-Hash für den Satz "Lorem ipsum dolor sit amet": fea80f2db003d4ebc4536023814aa885. Ändert man nun nur einen Buchstaben des Satzes, so erzeugt die Funktion einen komplett anderen Streuwert: "Loren ipsum dolor sit amet": 1daa85486bc99e1b09f60e71e98ca65d.

In vielen Programmiersprachen gibt es fertige Lösungen oder Ansätze, mit denen man diese Streuwerte ermitteln kann. Unter PHP z.B. genügt der Aufruf der eingebauten Funktion md5.

Im klassischen ASP sieht es dagegen etwas anders aus. Eine integrierte Funktion gibt es leider nicht. Man kann sich jedoch der zahlreichen Implementierungen von findigen Programmierern bedienen, die Ihren Code im Internet veröffentlicht haben. Hervorzuheben ist dabei der Code von Frez Systems, die, neben einem VB6-Modul, auch eine ASP-Version zum Download anbieten.

Anders sieht die Sache in ASP.NET aus. Bereits in Version 1.1. kann man über die Funktion ComputeHash des Objekts System.Security.Cryptography.MD5CryptoServiceProvider einen Wert nach MD5 hashen. Das daraus resultierende Byte-Array muss man nun noch in Hexadezimalzahlen umwandeln.

Etwas komfortabler geht mit mit der Funktion HashPasswordForStoringInConfigFile der Klasse System.Web.Security.FormsAuthentication. Diese erledigt alles in einem Rutsch und ist sogar in der Lage neben MD5- auch SHA1-Streuwerte zu erzeugen. Die Funktion ist eigentlich dazu gedacht Passwörter für Zugangsdaten von ASP.NET-Anwendungen zu verschlüsseln, die man in der Datei web.config hinterlegen will (Stichwort: credentials). Sie eignet sich aber hervorragend um bequem an MD5-Hashes heranzukommen. Viel Code dabei nicht notwendig:

<%@ Page Language="vb" %>
<%@ Import Namespace="System.Net" %>

<script runat="server">
   Function HashMD5(strText As String) As String

      If strText = Nothing Then strText = ""

      HashMD5 = System.Web.Security.FormsAuthentication. _
         HashPasswordForStoringInConfigFile(strText, "md5")

   End Function
</script>

<%
   Dim strText As String
   Dim strHash As String

   strText = Request.QueryString("text")
   strHash = HashMD5(strText)

   Response.Write(strText & " >>> " & strHash)
%>
kick it on dotnet-kicks.de AddThis 0 wikio-Stimme(n) Trackback-Url...

237 Kommentare bislang...

Dein Kommentar hierzu...


Kommentar-Feed für diesen Beitrag
Gravatare werden unterstützt .:. eMail-Adressen werden nicht veröffentlicht
 

RSS-Feed

Die URL des Standard-Newsfeed von zerbit.de lautet:

http://www.zerbit.de/rssfeed.aspx

Login


 

 

Statistik



kürzlich kommentiert

Artikel 51

  • Datum: 11.12.2005
    Kategorie: ASP.NET
    Zugriffe: 6.212
    Kommentare: 237
    Trackbacks: 0

Letzte Beiträge

Kategorien

Buttons & More

Blog-Roll

Banner Piraten-Partei