Autor Beitrag
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Do 06.09.07 21:44 
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 09.09.07 18:22 
Niemand ne Ahnung? *push* :?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 09.09.07 18:33 
Bei mir gibt's im Framework nur die abstrakte MD5-Klasse, von der z.B. der MD5CryptoServiceProvider erbt.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Chryzler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 09.09.07 21:46 
user profile iconChristian 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 09.09.07 22:38 
user profile iconChryzler 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.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Chryzler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 09.09.07 22:40 
user profile iconChristian 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 10.09.07 12:42 
user profile iconChryzler 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mo 10.09.07 13:01 
user profile iconKhabarakh hat folgendes geschrieben:
user profile iconChryzler 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).
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 10.09.07 14:13 
Ich bin davon ausgegangen, dass man sich das SDK durchliest, bevor man zu einer bestimmten Klasse eine Frage stellt ;) . Dann wüsstest du auch, was managed/unmanaged in diesem Fall überhaupt bedeutet.
SHA1Managed class, about hat folgendes geschrieben:
This is a purely managed implementation of SHA1 that does not wrap CAPI.

Managed = Eigene CLR-Implementierung
Unmanaged = Wrapper um einen CAPI-CSP
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 ;) .