| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 485
|
Verfasst am: 07.02.2010, 02:08 Titel: MD5 |
|
|
Ich hab für zukünftige Zwecke mal einen Code für MD5-Hashes portiert.
Es gibt hier und da zwar verschiedene FB-Versionen, aber entweder funktionieren sie nicht oder nicht so, wie ich es brauchen könnte.
Der Code ist dank OOP (C++ Portierung) ziemlich übersichtlich und durch zwei zusätzliche Funktionen ziemlich einfach zu bedienen. Diese wären:
| Code: | | createHash(text As String) As String |
und
| Code: | | createFileHash(file As String) As String |
Die Zip enthält auch ein Beispiel.
Einige Funktionen hab ich gegen Makros ersetzt um die Performance zu erhöhen.
Viel Spaß damit:
Download |
|
| Nach oben |
|
 |
St_W

Anmeldungsdatum: 22.07.2007 Beiträge: 469 Wohnort: AUSTRIA
|
Verfasst am: 07.02.2010, 02:37 Titel: |
|
|
Ich hab schon öfters eine MD5 Berechnung benötigt und hab bis jetzt immer auf ein altes Code-Schnipsel aus dem englischen FB-Forum zurückgegriffen. Deins scheint mir für manche Anwendungen aber etwas komfortabler, also möchte ich mich schon im Voraus bei dir für diesen Code bedanken, da ich ihn sicher einmal verwenden werde.
Kleiner Tipp:
Damit die Funktion memcpy nicht beim Inkludieren von "crt/string.bi" manuell auskommentiert werden muss könntest du mit einer Pre-Compiler Bedingung lösen:
| Code: | #ifndef memcpy
Function memcpy(destination As UByte Ptr, source As UByte Ptr, num As UInteger) As UByte Ptr
'[...]
End Function
#endif |
So wird die Funktion nur deklariert, wenn memcpy nicht bereits deklariert wurde. _________________ Ich bin für JMPs statt GOTOs
Besucht meine Programmierhomepage unter http://www.qbasic.at.tc ! - vorübergehend auf Eis gelegt.
http://www.mv-lacken.at <-- aktuelles Webprojekt: Homepage des Musikverein Lacken (MV Lacken) |
|
| Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 485
|
Verfasst am: 07.02.2010, 02:41 Titel: |
|
|
| Gute Idee, daran hab ich gar nicht gedacht. Schon aktualisiert. |
|
| Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1389
|
Verfasst am: 07.02.2010, 05:14 Titel: |
|
|
| Code: | Function memcpy(destination As UByte Ptr, source As UByte Ptr, num As UInteger) As UByte Ptr
'Ersatz für "crt/string.bi"
'Prüft nicht nach der Größe von Destination
For i As Integer = 0 To num - 1
destination[i] = source[i]
Next
Return destination
End Function |
Meinst du nicht, dass es einfach wäre, einfach die CRT Funktion zu deklarieren? Die wäre auch deutlich perfomanter. _________________ Langsam kann ich es einfach nicht mehr leiden, wenn Leute einem nicht richtig zuhören bzw. Texte nur überfliegen und dann einfach irgendwas da reininterpetieren.
{ Hat meistens schlechte Laune } |
|
| Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 485
|
Verfasst am: 07.02.2010, 15:48 Titel: |
|
|
Performanter könnte sein, aber nachdem ich das geändert habe, hab ich die Geschwindigkeit gemessen und konnte keine Veränderung feststellen. Die Funktion wird auch pro Durchlauf nur dreimal ode so aufgerufen, da fällt das nicht ins Gewicht. Ich wollte schlicht nicht auf die crt angewiesen sein und die ganzen anderen Funktionen unnötig mitschleppen müssen.
Der Code ist offen und wenn jemand lieber die crt verwenden will, hab ich damit keine Probleme. |
|
| Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 8711 Wohnort: Neben der Festplatte
|
Verfasst am: 07.02.2010, 16:15 Titel: |
|
|
du kannst ja ein #ifdef USE_CRT oder so benutzen...  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathmatik nicht erschaffen worden wäre.
 |
|
| Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1389
|
Verfasst am: 07.02.2010, 20:45 Titel: |
|
|
Die CRT wird so oder so gelinkt. Sogar bei dem Programm hier:
(Vermutlich sogar bei einem leeren Programm, weil die Ctors und Dtors der FBRT ganz sicher die CRT benötigen)
Aber egal, zumindest auf modernen Systemen ist die CRT immer schneller. Erstrecht, wenn man die nicht für i386 sondern für i686 oder noch höher kompiliert hat.
</ot> _________________ Langsam kann ich es einfach nicht mehr leiden, wenn Leute einem nicht richtig zuhören bzw. Texte nur überfliegen und dann einfach irgendwas da reininterpetieren.
{ Hat meistens schlechte Laune } |
|
| Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 485
|
Verfasst am: 23.02.2010, 21:01 Titel: |
|
|
Kurzes Update:
Ein paar unnötige Operationen entfernt und demzufolge die Hashes in der Beispieldatei angepasst. |
|
| Nach oben |
|
 |
|