AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

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 2  1 2      
Michael II

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

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 15:50
Zitat:
Mein Problem besteht darin, dass ich ja weg von den Strings will in TBytes. Aber ich weiß nicht wie man
a) einen String in TBytes speichert
und
b) diese TBytes dann korrekt über einen Stream abspeichert
Wenn du deine Daten in einem Stream benötigst, dann lade doch dein File direkt dort rein.
Sowohl TMemoryStream wie TFileStream kennen eine Methode LoadFromFile.
Michael Gasser
 
nahpets
(Gast)

n/a Beiträge
 
#2

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 16:08
Im Showmessage zeigst Du aber nicht die Binärweert des Hashes an, sondern seine Übersetzung in eine anzeigbare Form.
Und wenn Du die in der DAtei haben willst, dann musst Du auch die in die Datei schreiben.

Hast Du sowas wie TotalCommander?

Dann nimm den mal. Gehe zur Datei mit dem Hash.
Taste F3 zur Anzeige.
Taste 3 zur Hexadezimalanzeige.
Taste Ende, um ans Ende der Datei zu gehen.

Dort siehst Du dann rechts den Binärwert byteweise. Im mittleren Teil die 16 Hexadezimalwerte dazu.

Und ja, nichtanzeigbare Werte (von Dir als Salat bezeichnet) sind vollkommen normal und in Ordnung.

Ein MD5-Hash ist ein Binärwert und keine (unverarbeitet) sinnvoll anzeigbare Zeichenfolge. Es ist kein String.

Der MD5-Hash des Programmes, an dem ich gerade arbeite ist zur Zeit:
Code:
-š³úc;o6¦¥,1<4;
(Das vorletzte Zeichen kann hier nicht dargestellt werden.)

Hexadezimal:
Code:
2D 9A B3 FA 63 3B 6F 36 A6 A5 2C 31 3C 34 06 3B
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#3

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 16:16
Delphi-Referenz durchsuchenBinToHex

TGUID hat zufällig gleich viele Bytes wie ein MD5 ... ein Schelm, wer das einfach mal castet.
Ein Therapeut entspricht 1024 Gigapeut.
 
a.def
(Gast)

n/a Beiträge
 
#4

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 18:24
Ok das bedeutet also, dass man, wenn man einen Hash erzeugen möchte, eben auch nicht mit TBytes arbeiten kann.
Ich dachte nur ich ändere alles auf TBytes um, da im anderen Thread ja empfohlen wurde von String weg zu TBytes zu gehen.
 
nahpets
(Gast)

n/a Beiträge
 
#5

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 19:21
String ist aber auch nicht sinnvoll.

Wenn man 'nen Hash auf 'ne Exe machen will, geht man sie bytewesie durch.

TFileStream oder TMemoryStream dürften hier eher die Mittel der Wahl sein.

Unter Delphi 7 nutze ich diese Unit: https://sourceforge.net/p/lazarus-cc...hes/dcpmd5.pas

Das geht dann ungefähr so:
Delphi-Quellcode:
function TfmMain.GetMD5(st : TMemoryStream) : String;
var
  Digest : array[0..15] of byte;
  i : Integer;
  iPos : Integer;
  md5 : TDCP_md5;
begin
  md5 := TDCP_md5.Create(Self);
  iPos := st.Position;
  st.Position := 0;
  md5.Init;
  md5.UpdateStream(st,st.Size);
  md5.Final(Digest);
  Result := '';
  for i := 0 to 15 do Result := Result + IntToHex(Digest[i],2);
  st.Position := iPos;
  md5.Free;
end;
MD5 an 'ne Datei anhängen:
Delphi-Quellcode:
var
  Digest : array[0..15] of byte;
  i : Integer;
  iPos : Integer;
  md5 : TDCP_md5;
begin
  md5 := TDCP_md5.Create(Self);
  sf := tFileStream.Create(ParamStr(0),fmOpenReadWrite);
  md5.Init;
  md5.UpdateStream(sf,sf.Size);
  md5.Final(Digest);
  sf.Position := sf.Size;
  for i := 0 to 15 do sf.Write(Digest[i],1);
  sf.Free;
  md5.Free;
end;
In neueren Delphis gibt es dashier: http://docwiki.embarcadero.com/Libra...hBytesFromFile

Ich rate jetzt mal, es könnte so ein Einzeiler sein: ShowMessage(TEncoding.ANSI.GetString(System.Hash.THashMD5.GetHashBytesFromFile(ParamStr(0)));
Das Ergebnis davon an 'ne Datei zu hängen, dürften dann kein Problem mehr sein.
 
a.def
(Gast)

n/a Beiträge
 
#6

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 19:33
Mh ich habe das so realisiert (hoffe ihr haut mich nicht)
--- siehe Anhang Beitrag 34 ---

Ich habe ein kleines Programm welches nur den Code enthält um den Hash an eine Datei zu hängen. Alle anderen Dateien enthalten nur den Code um den Hash auszulesen.
Nachdem ich alles kompiliert habe, ziehe ich einfach meine Exe-Dateien in dieses kleine Tool, klicke den Button und jede Exe bekommt einen Hash verpasst.

Geändert von a.def ( 2. Mai 2017 um 20:36 Uhr)
 
nahpets
(Gast)

n/a Beiträge
 
#7

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 20:05
Das kann man noch ausbauen:

Baue einen AfterCompile-Experten.

Der hängt nach der erfolgreichen Kompilierung den Hash direkt an die Exe, dann sparst Du die die Nutzung des Tools und kannst auch nicht mal vergessen den Hash an 'ne Exe zu hängen.

Die von Dir geschrieben Funktionen kannst Du auch in 'nem Experten verwenden.
 
Michael II

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

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 21:27
Hallo a.def

nur kurz: Am Ende des Files fällt dein md5Hash auf wie ein bunter Hund.

In einem weiteren Schritt wirst du nun den Hash Code direkt irgendwo in deine Programm Exe schreiben .

Eine Frage nebenbei: Wie vertreibst du deine Freeware? Wenn via Download von einer Webseite, dann musst du diese doch sicher irgendwann auch digital signieren - oder hast du derart hohe Downloadzahlen, dass Edge und Co den Download auch so zulassen?


Gruss
M
Michael Gasser
 
a.def
(Gast)

n/a Beiträge
 
#9

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 21:34
Zitat:
nur kurz: Am Ende des Files fällt dein md5Hash auf wie ein bunter Hund.
Ja, leider. Ich hätte sonst keine Idee wo man ihn verstecken könnte.

Zitat:
In einem weiteren Schritt wirst du nun den Hash Code direkt irgendwo in deine Programm Exe schreiben.
Ok das verstehe ich nicht. Was genau meinst du?
Wenn glaube zu verstehen was du meinst, dann schreibe ich dir das jetzt mal per PN

Zitat:
Wenn via Download von einer Webseite, dann musst du diese doch sicher irgendwann auch digital signieren - oder hast du derart hohe Downloadzahlen, dass Edge und Co den Download auch so zulassen?
Hatte bisher keinelei Probleme. VirusTotal hat bei meiner Exe auch nicht gemeckert (Detection ratio: 0 / 61).

Digital signieren wäre echt schön, ist mir aber zu teuer. Muss ich dafür nicht sogar meinen Sourcecode preisgeben?
Was würde ein digitales Zertifikat denn im günstigsten Falle kosten? Und wäre das dann auch alles seriös?

Was die Downloadzahlen angeht. Wenn ich ein Update veröffentliche dann schnellt mein Traffic mal gerne auf 10GB und mehr pro Monat.

Geändert von a.def ( 2. Mai 2017 um 21:38 Uhr)
 
BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#10

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 20:08
Kurzer Zwischeneinschub: Wenn dein Ziel wirklich die kryptographische Sicherheit ist, dann würde ich dir nicht empfehlen diese selbst zu basteln. Es ist wirklich "mal schön" sowas zu auszuprobieren und daran herum zu probieren, aber im Allgemeinen ist das nicht wirtschaftlich, da es wesentlich einfachere Lösungen gibt. Eine Hashfunktion so zu konstruieren, sodass sie kryptographisch nicht so einfach angreifbar ist, ist schwer! Es muss "hinreichend" schwer sein Kollisionen künstlich erzeugen zu können. Die Funktion muss zusätzlich die "normalen" Vorteile erfüllen: möglichst breit "streuen", Berechenbarkeitsaufwand "vorhersehbar" deterministisch, ...
Fertige Primitive stehen auch stärker im öffentlichen Fokus, sodass Schwächen auch öffentlich im Interesse stehen und man davon mitbekommt. Die Funktionen sind so komplex, dass man sich auch gegen verdeckte Manipulation schützen kann.

Eine Idee als Lösung ist zum Beispiel das Kaskadieren verschiedener Hashfunktionen, das heißt das hintereinanderausführen verschiedener oder gleicher Hashfunktionen, die vielleicht dazwischen noch mit Klartext konkateniert werden, oder oder...

Gruß ,
Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!
 
Thema geschlossen
Seite 1 von 2  1 2      


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 05:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz