Entwickler-Ecke
Basistechnologien - Managed Code oder Unmanaged?
Chryzler - Do 06.09.07 21:44
Titel: Managed Code oder Unmanaged?
Soo,
ich hab vor den TigerHash-Algo in .NET zu implementieren (in Delphi ist er so gut wie fertig, funktioniert trotzdem nicht ganz), dabei bin ich auf die Klasse HashAlgorithm gestoßen, von der sollte man also jeden HashAlgo ableiten. Soweit ok. Jetzt hab ich mir mal die mitgelieferten MD5 und SHA1-Implementationen angesehen, von denen es jeweils eine Unmanaged Code-Variante gib (MD5), und eine Managed Code-Variante (MD5Managed).
Welche von den beiden Klassen ist nun wann genau zu bevorzugen? Unmanaged müsste theoretisch eher schneller sein, wozu also managed? Und soll ich jetzt auch zwei TigerHash-Implementationen machen, oder reicht eine Managed Code? Bin völlig durcheinander.. :P
Chryzler
Chryzler - So 09.09.07 18:22
Niemand ne Ahnung? *push* :?
Christian S. - So 09.09.07 18:33
Bei mir gibt's im Framework nur die abstrakte MD5-Klasse, von der z.B. der MD5CryptoServiceProvider erbt.
Chryzler - So 09.09.07 21:46
Christian S. hat folgendes geschrieben: |
Bei mir gibt's im Framework nur die abstrakte MD5-Klasse, von der z.B. der MD5CryptoServiceProvider erbt. |
Stimmt. :shock: Wie komm ich jetzt auf MD5Managed? Muss in irgendeinem using-Namespace deklariert gewesen sein, kanns aber momentan nicht mehr finden. *Thema erledigt* :)
Ach ja, was ist der Vorteil von MD5CryptoServiceProvider gegenüber MD5? Ich weiß, MD5 ist ne abstrakte Klasse, geht aber einwandfrei..
Christian S. - So 09.09.07 22:38
Chryzler hat folgendes geschrieben: |
Ach ja, was ist der Vorteil von MD5CryptoServiceProvider gegenüber MD5? Ich weiß, MD5 ist ne abstrakte Klasse, geht aber einwandfrei.. |
Du instanzierst ja mit
MD5.Create nicht die Klasse MD5 (nicht mit dem Delphi-Konstruktor verwechseln!), sondern das liefert IIRC auch nur einen MD5CryptoServiceProvider zurück.
Chryzler - So 09.09.07 22:40
Christian S. hat folgendes geschrieben: |
Du instanzierst ja mit MD5.Create nicht die Klasse MD5 (nicht mit dem Delphi-Konstruktor verwechseln!), sondern das liefert IIRC auch nur einen MD5CryptoServiceProvider zurück. |
Aso danke.. kommt nie wieder vor! :)
Kha - Mo 10.09.07 12:42
Chryzler hat folgendes geschrieben: |
*Thema erledigt* :) |
Weshalb dies :gruebel: ?
Als ersten Schritt müsstest du jedenfalls einmal nachschauen, ob es diesen TigerHash in der CAPI gibt, sonst bleibt dir logischerweise sowieso nur die Managed Variante.
Chryzler - Mo 10.09.07 13:01
Khabarakh hat folgendes geschrieben: |
Chryzler hat folgendes geschrieben: | *Thema erledigt* :) | Weshalb dies :gruebel: ?
Als ersten Schritt müsstest du jedenfalls einmal nachschauen, ob es diesen TigerHash in der CAPI gibt, sonst bleibt dir logischerweise sowieso nur die Managed Variante. |
CAPI? Wieso erster Schritt? Der ist ja so gut wie fertig implementiert (und geht trotzdem ned :(, und die Delphi-Implementation ging auch noch nie..). Managed ist er sowieso, ansonsten müsste man ja afaik ne extra DLL verwenden (und den ganzen DllImport-Zeug).
Christian S. - Mo 10.09.07 15:34
Er frugtete doch aber nach MD5Managed bzw. Unmanaged und da es die gar nicht gibt, war die Frage geklärt ;-)
Kha - Mo 10.09.07 17:00
Ja, MD5.
Unter Anderem, sein zweites Beispiel SHA1 existiert nämlich wirklich in zwei Ausführungen ;) (das BCL-Team hatte wohl einfach keine Lust, so eine unsichere Hashfunktion noch einmal von Hand zu programmieren). Auch andere Verschlüsselungs-/Hash-Verfahren existieren doppelt:
- System.Security.Cryptography.RIPEMD160Managed // Hab ich noch nie gehört *g*, ist auch wirklich unbekannter als SHA1
- System.Security.Cryptography.RijndaelManaged
- janz viele SHAs
- System.Security.Cryptography.AesManaged // 3.5
Wenns also den Tiger [s]im Tank[/s][meta]Wo bist du, mein Lieblings-BB-Tag?[/meta] in der CAPI geben sollte, könnte Chryzler einmal die Performance von Managed/Unmanaged untersuchen und danach ggf. noch eine Unmanaged-Implementierung bauen. Hätte unabhängig von der Performance den Vorteil, dass die Wahrscheinlichkeit von Bugs etwas geringer einzuschätzen ist ;) .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!