Einzelnen Beitrag anzeigen

a.def
(Gast)

n/a Beiträge
 
#45

AW: DEC 5.2 String hashen?

  Alt 3. Mai 2017, 12:36
Habe deinen Code genommen und angepasst. Das hier ist mein Code. Ehrlich gesagt verstehe ich noch nicht, wie man TEIL1 und TEIL2 wieder zusammenfügen sollen, wenn am Ende doch ein Hash dazwischen steht.

Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var
 aByteStream, aByteStream2: TBytesStream;
 iPosRawByte: Int64;
 sHash: string;
begin
 // Save hash on the position of RawByteString "a"

 aByteStream := TBytesStream.Create;
 try
  aByteStream.LoadFromFile(aFileName);
  iPosRawByte := Pos(RawByteString(a), RawByteString(aByteStream.Bytes));

  if iPosRawByte > 0 then
   begin
    aByteStream2 := TBytesStream.Create;
    try
     aByteStream2.Write(aByteStream.Bytes[0], iPosRawByte - 1);
     aByteStream2.Write(aByteStream.Bytes[iPosRawByte + Length(a)], aByteStream.Size - (iPosRawByte + Length(a))); // +1 entfernt, da Hash sonst falsch
     // Original: f2.Write( f.Bytes[hp+length(a)], f.Size - (hp+length(a)) + 1 );

     sHash := System.hash.THashSHA2.GetHashString(Trim(TEncoding.ANSI.GetString(aByteStream2.Bytes))); // abgeändert, da Hash sonst ebenfalls falsch
     // Original: hashRaw := TByteToHex( System.hash.THashMD5.GetHashBytes( f2 ) );

     Move(AnsiString(sHash)[1], aByteStream.Bytes[iPosRawByte - 1], Length(a));
     aByteStream.SaveToFile(aFileName);
    finally
     aByteStream2.Free;
    end;
   end;
 finally
  aByteStream.Free;
 end;
end;
Das hier ist meine Prozedur die -nur- dafür da ist den Hash in die Datei zu schreiben.

Erklärung;
ich habe ein kleines Tool, welches NUR dafür da ist die Hashwerte ans Ende von jeder meiner Exe-Dateien zu schreiben.
Ich schiebe dem Tool einfach meine Exe-Dateien in ein Memo, klicke den Button und alle Exen werden angepasst.

Geändert von a.def ( 3. Mai 2017 um 12:41 Uhr)