AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DEC 5.2 String hashen?

Ein Thema von a.def · begonnen am 2. Mai 2017 · letzter Beitrag vom 7. Mai 2017
Thema geschlossen
Seite 1 von 12  1 2311     Letzte » 
a.def
(Gast)

n/a Beiträge
 
#1

DEC 5.2 String hashen?

  Alt 2. Mai 2017, 13:24
Ich habe mir gerade nach Jahren noch einmal die DEC-Units angeguckt die ich in einer alten Spielerei gefunden habe.
Dort wird der Hash einer Datei mit CalcFile berechnet.

Gab es nicht auch irgendwann mal die Möglichkeit einen den Hash eines Strings zu berechnen oder irre ich mich?
 
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.058 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 13:42
Gab es bestimmt, aber für XE8 kannst du auch das hier nehmen:
http://docwiki.embarcadero.com/Libra...g.TNetEncoding
 
a.def
(Gast)

n/a Beiträge
 
#3

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 13:46
Ich habe gerade durchs Herumstöbern noch etwas gefunden:
System.Hash.THashMD5 (und andere). Sehr viel einfacher und in einer Zeile erledigt!
s := System.Hash.THashBobJenkins.GetHashString('1234567890123456');

Da steht auch ein Hash drin namens BobJenkins. Der Wikipedia-Artikel hilft mir nicht wirklich. Ist der sicher und kann nicht zurück-gerechnet werden?

Geändert von a.def ( 2. Mai 2017 um 13:48 Uhr)
 
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.058 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 13:50
Richtig, du wolltest ja hashen, ich war gedanklich woanders.

Möchtest du was hashen oder etwas verschlüsseln?
 
a.def
(Gast)

n/a Beiträge
 
#5

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 14:14
Eher hashen. Den Originalinhalt brauche ich danach nicht mehr.
Dabei stellt sich mir die Frage: MD5, SHA-XYZ oder BobJenkins. Oder etwas ganz anderes vielleicht.
 
nahpets
(Gast)

n/a Beiträge
 
#6

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 14:24
Was hast Du denn vor?

EXE gegen Manipulation per HEX-Editor ... schützen?

Da sollte MD5 für 'nen Selbsttest ausreichen.
 
a.def
(Gast)

n/a Beiträge
 
#7

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 14:36
Im Prinzip ja. Aber auch andere Spielereien. Ich stelle mir grundsätzlich nur die Frage welchen Hash man benutzen könnte ohne ihm direkt anzusehen welcher Algorithmus es ist.
 
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
703 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 14:41
Hallo a.def

du schreibst

Zitat:
Ist der sicher und kann nicht zurück-gerechnet werden?
Ich kann nicht abschätzen, was du einerseits mit "sicher" und andererseits mit "zurück gerechnet" meinst.

Nur soviel:
MD5 erzeugt zu einer beliebigen Zeichenkette einen 128 Bit Wert.

Die Definitionsmenge ist also unendlich gross, die Wertemenge aber umfasst lediglich 2^128 Elemente.

2^128 ist zwar auch sehr gross, aber eben nicht unendlich. MD5 bildet also eine unendlich grosse Menge auf eine endliche Menge ab. D.h. die Funktion ist zwangsläufig nicht injektiv/eineindeutig. Oder etwas anders ausgedrückt: Es liegt in der Natur dieser Funktion [generell von Hash Funktionen], dass mehrere Zeichenketten auf das gleiche Element (den gleichen Hash Wert) abgebildet werden.

Wenn zwei Zeichenketten auf den gleichen Wert abgebildet werden, dann nennt man dies im Zusammenhang mit Hash Funktionen eine "Kollision".



Wenn du also mit "sicher" meinst "Gibt es zu einem Hashwert w ganz sicher nur eine einzige Zeichenkette z für welche md5(z)=w gilt?", dann lautet die Antwort NEIN. Wie oben beschrieben kann md5 gar nicht injektiv sein. Es kann also gut sein, dass noch weitere Zeichenketten z1,... durch md5 ebenfalls auf w abgebildet werden.

Du fragst nach dem Zurückrechnen. Auch hier lautet die Antwort NEIN. [Wenn dem so wäre, dann wären alle bisherigen Kompressionsprogramme auf dem Markt Unsinn (sie sind es natürlich nicht); denn dann könnte zum Beispiel WinZip jedes Dokument dieser Welt in 2^128Bit speichern. Wir haben aber mit den Überlegungen oben gezeigt, dass dem nicht sein kann.]
Ein einfaches Beispiel dazu, welches dir zeigt, dass Zurückrechnen niemals funktionieren kann: Stell dir vor, du ermittelst für die Zahlen von 1 bis 2^128+1 [egal, ob sie binär vorliegen oder als Zeichenkette] die jeweiligen md5 Werte. Du hast dann 2^128+1 Elemente, aber wie du weisst höchstens 2^128 Funktionswerte. D.h. es muss mindestens 2 Zahlen in 1 bis 2^128+1 geben, welche durch md5 dem gleichen Wert zugeordnet werden. => Zurückrechnen geht nicht.

Injektivität/Eineindeutigkeit:
https://de.wikipedia.org/wiki/Injektivit%C3%A4t

Kollisionen bei md5:
https://de.wikipedia.org/wiki/Messag...st_Algorithm_5
Michael Gasser

Geändert von Michael II ( 2. Mai 2017 um 15:08 Uhr)
 
nahpets
(Gast)

n/a Beiträge
 
#9

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 14:45
Die Antwort ist doch ganz einfach: Ein eigener.

Erfüllt zwei Bedingungen:

Es ist ein (lehrreiche) Spielerei.
Kein anderer kann ihn erkennen.

@Michael II
Klasse Erklärung
 
a.def
(Gast)

n/a Beiträge
 
#10

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 14:56
Die Erklärung ist echt der Wahnsinn das stimmt.
Ein eigener Hash? Klingt lustig, würde ich aber niemals hinbekommen

Dumme Frage:
ist eine Hash-Funktion nicht anderes als ein wildes herumschupsen von Zeichen?

Geändert von a.def ( 2. Mai 2017 um 14:59 Uhr)
 
Thema geschlossen
Seite 1 von 12  1 2311     Letzte » 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz