Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ  SuchenSuchen  MitgliederlisteMitgliederliste  BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil  Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen  LoginLogin
Zur Begleitseite des Forums / Impressum
  Heute ist .
Aktueller Forenpartner:

MD5

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 485

BeitragVerfasst am: 07.02.2010, 02:08    Titel: MD5 Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 469
Wohnort: AUSTRIA

BeitragVerfasst am: 07.02.2010, 02:37    Titel: Antworten mit Zitat

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 lächeln
Besucht meine Programmierhomepage unter http://www.qbasic.at.tc ! zwinkern - vorübergehend auf Eis gelegt.
http://www.mv-lacken.at <-- aktuelles Webprojekt: Homepage des Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 485

BeitragVerfasst am: 07.02.2010, 02:41    Titel: Antworten mit Zitat

Gute Idee, daran hab ich gar nicht gedacht. Schon aktualisiert.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1389

BeitragVerfasst am: 07.02.2010, 05:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 485

BeitragVerfasst am: 07.02.2010, 15:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 8711
Wohnort: Neben der Festplatte

BeitragVerfasst am: 07.02.2010, 16:15    Titel: Antworten mit Zitat

du kannst ja ein #ifdef USE_CRT oder so benutzen... lächeln
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathmatik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen MSN Messenger
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1389

BeitragVerfasst am: 07.02.2010, 20:45    Titel: Antworten mit Zitat

Die CRT wird so oder so gelinkt. Sogar bei dem Programm hier:
Code:
End

(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. grinsen

</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
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 485

BeitragVerfasst am: 23.02.2010, 21:01    Titel: Antworten mit Zitat

Kurzes Update:

Ein paar unnötige Operationen entfernt und demzufolge die Hashes in der Beispieldatei angepasst.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum