64 Bit Hashcode erstellen aus String

GS_Unnamed

Mitglied
Hallo zusammen

Ich habe so meine Mühe mit Hashing.

Ich brauche einen 64 Bit Hashcode für eine String,
zB:
2012-10-02 18:09:01.308

Via google sind mir einige Lösungsvorschläge zugefallen, aber ich verstehe sie nicht, zb ...digest...
Java ibt ebenfalls einige Möglichkeiten zum Hashen vor, die mir genauso wenig sagen.
Ich hoffe Ihr könnt etwas Licht rein bringen.

Wie könnte eine Methode in Java dazu aussehen?

Allgemein: Wie wird überhaupt ein Hashwert generiert?

Vielen Dank für Eure Hilfe
 

langhaar!

Bekanntes Mitglied
Allgemein: Wie wird überhaupt ein Hashwert generiert?

Diese Frage suggeriert, dass du nicht weißt, was hashen bedeutet.

Siehe Punkt Definition:
Hashfunktion ? Wikipedia

Eine einfache Hashfunktion erhälst du, wenn du jeden String so lässt, wie er ist (Identität).
Eine weitere sehr einfache Hashfunktion ist die Abbildung aller Strings auf einen Wert.

Du kannst auch den ersten Buchstaben eines Strings nehmen oder die Quersumme bilden...
Die Möglichkeiten sind unbegrenzt.
 
Zuletzt bearbeitet:

GS_Unnamed

Mitglied
Hmm OK

Aber ich kann leider nicht bei den einfachen Funktionen bleiben, ich brauche eine mit möglichst wenig Kollisionen, die aber trotzdem noch eine brauchbare Geschwindigkeit bringt und das Ganze 64 bit lang
 
P

pappawinni

Gast
Diese Frage suggeriert, dass du nicht weißt, was hashen bedeutet.

Siehe Punkt Definition:
Hashfunktion ? Wikipedia

Eine einfache Hashfunktion erhälst du, wenn du jeden String so lässt, wie er ist (Identität).
Eine weitere sehr einfache Hashfunktion ist die Abbildung aller Strings auf einen Wert.

Du kannst auch den ersten Buchstaben eines Strings nehmen oder die Quersumme bilden...
Die Möglichkeiten sind unbegrenzt.

Deine Antwort suggeriert, dass du das auch nicht erklären kannst.
Aber da bist du auch nicht der Einzige.

Allgemein bedeutet "Hashcode" wohl, dass die eigentliche Information durch eine andere, i.d.R. kürzere ersetzt wird. Wenn es um Programmierung geht, kann das evtl. nur bedeuten, dass statt des gespeicherten Objekts eine Referenz zum gespeicherten Objekt gehandelt wird.
Bei einer Verschlüsselung (Kryptologie) sieht das dann wieder etwas anders aus, auch wenn es da sicherlich gewisse Parallelen gibt.

Insofern ist das Wort "Hashcode" wohl nichts, was eindeutig interpretierbar ist.
Deine Frage geht wohl in Richtung Verschlüsselungstechnik, wozu ich im Grunde garnichts sagen kann....
 

GS_Unnamed

Mitglied
Ja das Ganze läuft auf Kryptologie hinaus.

Ich entwickle grade Algorithmen zum Verschlüsseln und um eine Idee umzusetzen brauche ich einen Hashcode, aber ja, sieht anscheinend schwierig aus, einfach schnell einen zu basteln ;(
 

Ark

Top Contributor
Aber ich kann leider nicht bei den einfachen Funktionen bleiben, ich brauche eine mit möglichst wenig Kollisionen, die aber trotzdem noch eine brauchbare Geschwindigkeit bringt und das Ganze 64 bit lang
Da musst du wohl etwas konkreter werden. Was genau willst du wie verschlüsseln und warum? Einweg-Verschlüsselung (=Hashwerte), symmetrische oder asymmetrische Verschlüsselung? Was ist dir wichtiger: Geschwindigkeit oder Sicherheit? Und warum überhaupt 64 Bit?

Im Gegensatz zu Hashfunktionen wie in java.lang.String oder java.lang.Integer sind kryptografisch sichere Hashfunktionen meist viel aufwändiger zu berechnen. Das dient nicht nur dem Zweck der Kollisionsfreiheit, sondern soll es möglichst schwierig machen, aus dem Hashwert die ursprüngliche Nachricht zu berechnen.

Beispiel:
Code:
java.lang.Integer.hashCode()
ist kollisionsfrei und sogar wahnsinnig schnell zu berechnen. Leider verrät dieser Hashcode die ursprüngliche Nachricht, und diese ist ebenso schnell zu rekonstruieren: Der Hashcode ist die ursprüngliche Nachricht.

Kollisionsfreiheit ist also nicht unbedingt das entscheidende Kriterium. Und je kürzer dein Hashwert wird, desto unsicherer ist er (einfach gesagt). Außerdem kommt es auch auf die Nachrichten an, die du verschlüsseln willst. Um bei deinem Beispiel zu bleiben: Wenn du nur Strings, die Zeitstempel mit Millisekunden-Genauigkeit widerspiegeln, verschlüsseln willst, also z.B.

"2012-10-02 18:09:01.308",

dann gibt es für jeden Tag nur 1000 * 60 * 60 * 24 = 86400000 verschiedene Kryptogramme. Wenn dem Angreifer also der Tag bekannt ist oder er den zu untersuchenden Zeitraum stark eingrenzen kann, ist die Verschlüsselung (unabhängig vom konkreten Verfahren) so gut wie nutzlos. Etwas allgemeiner gesagt: Es werden viel, viel weniger Bit an Informationen (sprich: Entropie) in deinem Hashwert übrig bleiben als 64. Für den Zeitraum vom Jahr 2000 bis zum Jahr 2100, also 100 Jahre, werden z.B. nur ld(1000 * 60 * 60 * 24 * 365,25 * 100), also ungefähr 41,521 Bit benötigt – vorausgesetzt natürlich, es bleibt bei solchen Zeitstempeln.

Ark
 

GS_Unnamed

Mitglied
Danke schonmal fürr diese Antwort, das bringt mich schon etwas weiter.

Mein eigentliches Verschlüsseln kommt nachher, fragt bitte nicht wieso, damit könnte ich grade dutzende Seiten füllen :autsch:

zum Zeitstempel kommt nachher schon noch was dazu, war nur ein Beispiel, anscheinend etwas unglücklich.

Sicherheit ist wichtig, ich will nicht das jemand vom Hashwert auf die Nachricht kommt.
Aber zum ausprobieren reicht etwas halbwegssicheres, das sich schnell berechnen lässt.
Nach deiner Erklärung ist auch Kollisionsfreiheit nicht mehr das wichtigste.
 

Ark

Top Contributor
Sicherheit ist wichtig, ich will nicht das jemand vom Hashwert auf die Nachricht kommt.
Aber zum ausprobieren reicht etwas halbwegssicheres, das sich schnell berechnen lässt.
Halbwegs(!) sicher dürfte MD5 sein. Das erzeugt dir zwar 128 Bit, aber du könntest einfach beide 64-Bit-Hälften ver-XOR-en. Das sollte zumindest ein bisschen taugen, denke ich.

Sieh dir dazu einfach die Klasse java.security.MessageDigest an.

Ark
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
S Interface Equals und hashCode Java Basics - Anfänger-Themen 16
L Logistiksystem Methode equals und hashcode Java Basics - Anfänger-Themen 20
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
G HashCode für Indexberechnung im Array Java Basics - Anfänger-Themen 2
E hashCode implementierung Java Basics - Anfänger-Themen 9
M hashcode Java Basics - Anfänger-Themen 3
T hashCode-Kontrakt Java Basics - Anfänger-Themen 1
Psypsy hashCode, equals und toString Java Basics - Anfänger-Themen 3
K hashCode, compareTo vs. equals Java Basics - Anfänger-Themen 3
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
T hashCode mit boolean Java Basics - Anfänger-Themen 1
M Frage zu HashCode Methode in Java Java Basics - Anfänger-Themen 7
M Hashcode als lesbarer String Java Basics - Anfänger-Themen 1
S Hashcode - Operator ^ Java Basics - Anfänger-Themen 11
K hashCode() Java Basics - Anfänger-Themen 2
C hashCode() bei Klassen, die nicht immutable sind Java Basics - Anfänger-Themen 27
M Collections Problem bei Überschreibung von hashcode() und equals() bei Hashset-Implementierung Java Basics - Anfänger-Themen 5
H Hashcode aus Datei erzeugen Java Basics - Anfänger-Themen 7
B Hashcode Java Basics - Anfänger-Themen 25
K equals() und hashcode() überschreiben Java Basics - Anfänger-Themen 5
T Code in hashCode Java Basics - Anfänger-Themen 2
S hashCode() überschreiben Java Basics - Anfänger-Themen 13
T equals() und hashCode() Java Basics - Anfänger-Themen 7
A HashCode Überschreiben Java Basics - Anfänger-Themen 2
H Suche spezifische Eigenschaft von Object - sowas wie ".hashCode()" Java Basics - Anfänger-Themen 4
E Java hashCode equals Problem Java Basics - Anfänger-Themen 2
E hashCode bei Objekten Java Basics - Anfänger-Themen 14
neurox Tutorial equals und hashCode überschreiben Java Basics - Anfänger-Themen 33
B Frage zu equals() und hashCode() Java Basics - Anfänger-Themen 28
A veränderbar kanonische Klassen: Methode equals, hashcode, serializable Java Basics - Anfänger-Themen 5
M Fehler im HashCode()! Java Basics - Anfänger-Themen 12
S equals() - hashCode() - Contract Java Basics - Anfänger-Themen 54
S HashCode überschreiben! Java Basics - Anfänger-Themen 17
D HashCode eines Objekts Java Basics - Anfänger-Themen 5
R Vergleiche mit Equals(), hashCode() und == Java Basics - Anfänger-Themen 10
M HashCode von java.io.File - Wurde die Datei geändert ? Java Basics - Anfänger-Themen 2
B Hashcode?Was ist das und wozu? Java Basics - Anfänger-Themen 2
XWing Int erstellen lassen? Java Basics - Anfänger-Themen 11
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
A exe Datei erstellen Java Basics - Anfänger-Themen 8
J Packages erstellen Java Basics - Anfänger-Themen 7
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
C Gewinnspiel erstellen mit Algorithmus Java Basics - Anfänger-Themen 3
Ostkreuz Spielfeld Schatz erstellen Java Basics - Anfänger-Themen 5
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
T Objekte mit arrays erstellen Java Basics - Anfänger-Themen 6
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
laxla123 Dreieck erstellen Java Basics - Anfänger-Themen 1
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
A Passwort erstellen Java Basics - Anfänger-Themen 3
S CVS erstellen Java Basics - Anfänger-Themen 1
RashAGhul Java Verwaltungstool Erstellen mit kaum Wissen Java Basics - Anfänger-Themen 9
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
dennis_lnz Klassen Wie kann ich mein Java Textadventure verbessern, um ein Klassendiagramm zu erstellen? Java Basics - Anfänger-Themen 9
dcHost Java Kara Sensor erstellen Java Basics - Anfänger-Themen 1
JustAProgrammer Ein Dreieck mit Arrays erstellen Java Basics - Anfänger-Themen 2
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
U JList erstellen Java Basics - Anfänger-Themen 2
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
httprt Probleme bei dem erstellen von leveln in meinem Spiel Java Basics - Anfänger-Themen 2
frager2345 Programm erstellen ohne Autoboxing und Unboxing Java Basics - Anfänger-Themen 13
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
B Teilprofil erstellen Java Basics - Anfänger-Themen 1
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
N 2D Array Summe erstellen Java Basics - Anfänger-Themen 6
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S Programm erstellen Java Basics - Anfänger-Themen 3
S MinMax Programm erstellen Java Basics - Anfänger-Themen 4
S Mit for-Schleife ein 2D JLabel-Array mit veränderbaren Icons erstellen Java Basics - Anfänger-Themen 3
T Countdown erstellen Java Basics - Anfänger-Themen 7
I ZIP File erstellen Java Basics - Anfänger-Themen 10
L Ordner in neuen erstellten Ordner erstellen Java Basics - Anfänger-Themen 12
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Zurück Button erstellen Java Basics - Anfänger-Themen 1
melaniemueller Lagerverwaltung erstellen - mehrdimensionale Arrays Java Basics - Anfänger-Themen 62
B JaxB - Referenzen erstellen? Java Basics - Anfänger-Themen 2
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
alice98 Erste Schritte Liste erstellen ohne vorgefertigte Klassen Java Basics - Anfänger-Themen 1
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
E Classpath Datai erstellen Java Basics - Anfänger-Themen 3
B eine methode erstellen Java Basics - Anfänger-Themen 7
I Entity erstellen, die für API gedacht ist Java Basics - Anfänger-Themen 33
M Packages erstellen mit Java-Editor Java Basics - Anfänger-Themen 6
L FinanzApp erstellen Java Basics - Anfänger-Themen 1
J Junit4 Klasse erstellen Java Basics - Anfänger-Themen 5
B Warteschlange erstellen mit LinkedList ? Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben