HashString.dll

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • HashString.dll

      Die HashString.dll errechnet die Hash-Summe für Strings. Somit müssen bei Vergleichen nicht die Strings verglichen werden (= langsam), sondern nur LongInts.

      Die verwendete Technik arbeitet sehr schnell und ist relativ sicher gegenüber Kollisionen. Mein Tool XChange arbeitet mit dieser Methode und verwaltet 50000 (eher kurze) Strings, ohne dass eine Kollision stattfinden würde. Ist also mindestens ideal für wenige und mittlere String-Mengen.

      Download: frabbing.net/HashStringDll.zip

      Funktion:

      HashString(
      Zeiger auf einen String oder Speicher
      Länge des Strings oder 0 (erwartet bei 0 abschliessendes Nullbyte)

      )

      Ergebnis: Berechnete Hash-Summe als LongInt (oder bei Fehler -1, kommt nur vor bei Stringlänge = 0)


      Beispiele:
      ----------

      HashString(bereich#,128)
      HashString(Addr(text$),Len(text$))
      HashString(Addr(text$),0)
      Gruß, Frank

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Frabbing ()

    • Hi Frank, habe ja deine Hashstring.dll hier & da im Einsatz. Funzt ja auch prächtig (klein & vor allem schnell - (ich liebe schnelle Software ;-))). Im aktuellen Projekt brauche ich diesen Wert aber in einer konstanten Länge. was ja die LongInts nicht sind.
      Wenn ich aber diese LongInts in einem HexString wandle, haben sie in meine Testreihe immer artig die gleiche Länge - also alles so, wie ich es brauche.
      Bin mir aber trotzdem nicht sicher, ob es nicht irgendwann doch einen Ausreißer geben könnte & wollt dich lieber nochmal um Rat fragen, ob meine Theorie vllt. doch auf Sand gebaut ist...

      Übrigens kann man das Teil hier ja gar nicht mehr runterladen...
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      XProfan X2.1, X3.1, X4.1 - XP-Pro SP2/3 & W7-Pro 64 - Mint Mate, AntiX
    • Hi Jörg,

      die Chance eines Ausreissers beträgt 1 : 4294967295. Sofern die zu vergleichende Datenbank nicht viele Millionen Einträge enthält, wird die Technik auf jeden Fall sehr sicher sein.
      Spricht auch nichts dagegen, die LongInts als Hexadezimal zu verwalten. :-)

      Ist wieder online.
      Gruß, Frank

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Frabbing ()

    • Jo alles klar - das wollt ich hören/lesen, Frank :-)
      War also die richtige Entscheidung...
      Und Jörg, danke für den CodeSchnipsel. Für vereinzelte Hashstring-Operationen ist das in der Tat eine gute Option, um 100%tig sicher zu gehen, daß die HexStrings gleich lang sind, wenn man das nach der Erzeugung prüft & ggf. ausgleicht. Kommt bei mir auf jeden Fall öfter vor...
      In einer Schleife die z.B. 400 000 Hashstrings erzeugt, würde das wohl wie 'ne kleine Bremse wirken (fürchte ich - kommt auf einem Test an)
      Es sei denn, Frank hat sowas ebenfalls in seiner Assembler-Tool-Kiste...
      Hilft mir alles aber so schon weiter - werde das jetzt mal alles richtig ausprogrammieren...
      Danke ;-)
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      XProfan X2.1, X3.1, X4.1 - XP-Pro SP2/3 & W7-Pro 64 - Mint Mate, AntiX
    • Du kannst natürlich auch das profaneigene Format nehmen:

      Quellcode

      1. Format$("00000000",n1&)

      Das ist noch etwas schneller. Ansonsten kommt das natürlich auf die Geschwindigkeit an, mit der die Werte bei dir auflaufen. Wenn sie in einer Schleife tausendfach produziert werden, ist die Prüfung immer eine Bremse.
      Je nachdem, was du dann damit machst, kannst du sie anschließend dann vielleicht besser prüfen. Evtl in einer SortedListbox, wo du nur die zu kurzen Werte ändern musst.
      Anhören lohnt sich wuestensand.info
    • Hallo zusammen,
      zur Abwechslung benötige ich eine Hashsumme für Strings im SH1 Format. Gibt es dafür vllt. einen Schalter dafür in der Hashstring.dll oder muß ich dafür eine andere dll/Funktion suchen?
      Die bordeigene Windowsfunktion erstellt ja nur von Dateien einen SH1 Wert. (hab ich zumindest so verstanden)
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      XProfan X2.1, X3.1, X4.1 - XP-Pro SP2/3 & W7-Pro 64 - Mint Mate, AntiX
    • Nur für kurze Strings müsste das recht einfach über API zu lösen sein. Selbst für XProfan dürfte das ohne aufwendige Spalterei noch schnell genug sein, um eine GUI nicht haken zu lassen. Schwierig wird es est bei Dateien.
      ________________________________________________________

      PPFScanner PPFS Android MisterXMail@web.de
      Mfg AHT

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AHT ()

    • ja die Strings sind sehr kurz (ich will damit nur Passwörter verwalten). Über die die API-Beschreibung bin ich ja auch schon gestolpert, aber im Beispiel wurde dies nur an Dateien demonstriert. D.h. der 2. Parameter war ein Dateipfad. Ich brauch das an dieser Stelle als String, oder Zeiger auf String bzw. Bereich.

      Sonst hätte ich ja, wie gehabt, Franks DLL verwendet, aber es sollen in diesem Fall halt SH1 hashes sein, damit ein anderes (fremdes) Programm diese Werte ebenfalls zum Vergleich heranziehen kann.


      Würde mir ja schon weiterhelfen, wenn ich den Namen + Funktion der API kenne (falls in Windows vorhanden), die Strings encodiert.
      Im Inet bin zwar auf fastmd5.exe gestoßen, aber das ist ein Programm mit GUI.
      KommandozeilenOptionen hab ich da noch nicht entdeckt. Bin aber noch am frickeln...
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      XProfan X2.1, X3.1, X4.1 - XP-Pro SP2/3 & W7-Pro 64 - Mint Mate, AntiX
    • ok danke,
      hab jetzt nicht damit gerechnet, daß man zum erzeugen so viele Funktionen braucht.
      Das sieht sehr kompliziert aus.
      So auf Anhieb, würde ich einfach CryptCreateHash aus dieser Liste ausprobieren :-)

      Ich mach mal...
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      XProfan X2.1, X3.1, X4.1 - XP-Pro SP2/3 & W7-Pro 64 - Mint Mate, AntiX
    • ohh - jetzt wird mir langsam klar, warum so viele Funktionen.
      Die CryptCreateHash braucht diese als 'Zuarbeit' etc.
      Ist ja wirklich umständlich.

      Hat Microsoft denn vllt. eine Kompaktversion parat?
      stell mir das z.B so vor: (schematisch)

      Erfolg=bauhash(Zeiger auf String, Zeiger auf Bereich fürs Ergebnis, Longwert für hash-Algo[1=md5, 2=SHA1, usw.])


      Und was MS dann im Hintergrund veranstaltet, ist ja eigtl, unwichtig.
      Der Ergebnis-Bereich wird dann irgendwann von mir 'disposed' und alles gut :-)

      Wird es bestimmt nicht geben, wollte nur bissl Wunschdenken ablassen ;-)
      Gruß Jörg

      Ideen gibt es viele - man muß sie nur haben...
      XProfan X2.1, X3.1, X4.1 - XP-Pro SP2/3 & W7-Pro 64 - Mint Mate, AntiX
    • Mit der hashes.dll kannst du alle möglichen Hashes berechnen: SHA, Ripe-MD, Tiger...
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/65TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net