AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

unicodefähiges Base32Decode

Ein Thema von semo · begonnen am 2. Feb 2010 · letzter Beitrag vom 7. Feb 2010
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#11

Re: unicodefähiges Base32Decode

  Alt 3. Feb 2010, 13:29
Deshalb füllt der Encoder ja auch mit Padding-Bytes hinten auf (=).
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: unicodefähiges Base32Decode

  Alt 3. Feb 2010, 13:33
Zitat von GPRSNerd:
Deshalb füllt der Encoder ja auch mit Padding-Bytes hinten auf (=).
Nein, die = geben an, wieviele "zusättzlich" reinkodierte Zeichen nicht mit zum Ursprungsstring gehören.

Diese sind nicht dafür da, um die 8er-Gruppen zu bilden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#13

Re: unicodefähiges Base32Decode

  Alt 3. Feb 2010, 13:39
Fehler in Encoder gefunden! Das ShiftLinks mit der Multiplikation war verkehrt herum:

Aus
nr := nr * 256 + ord(source[i]); muss
nr := nr * 256 + ord(source[5+1-i]); gemacht werden.
Dito mit der 2. Berechnung darunter.

Delphi-Quellcode:
function Base32Encode(source: String): String;
const
  alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
var
  i: Integer;
  nr: Int64;
begin
  result := '';
  while length(source) >= 5 do
  begin
    nr := 0;
    for i := 1 to 5 do
      nr := nr * 256 + ord(source[5+1-i]);
    for i := 1 to 8 do
    begin
      result := result + alphabet[(nr mod 32) + 1];
      nr := nr div 32;
    end;
    delete(source, 1, 5);
  end;
  nr := 0;
  if length(source) > 0 then
  begin
    for i := 1 to length(source) do
      nr := nr * 256 + ord(source[Length(source)+1-i]);
    for i := 1 to 8 do
    begin
      if nr > 0 then
      begin
        result := result + alphabet[(nr mod 32) + 1];
        nr := nr div 32;
      end
      else
        result := result + '=';
    end;
  end;
end;
So stimmts dann auch mit dem anderen Code überein und geht unter D2009+.
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: unicodefähiges Base32Decode

  Alt 3. Feb 2010, 14:02
Zitat von GPRSNerd:
So stimmts dann auch mit dem anderen Code überein und geht unter D2009+.
Solange man dieses Verfahren nicht auf Binärdaten anwendet.

S := 'abcde'#0#0#0#0#0'xyz';

Außerdem würde ich in diesem Fall den uncodierten Text als AnsiString geklarieren, denn mit Unicode läuft es hier nicht richtig.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#15

Re: Base32Decode

  Alt 4. Feb 2010, 14:27
Ok, das encrypt und anschließendes decrypt produzieren nun ein stimmiges Ergebnis.

Ich habe nun folgende Verständnisschwierigkeit:
Ich habe in einer von einem Tauschbörsenprogramm produzierten Datei (ein Auszug daraus befindet sich im Anhang) einen Hexstring ('J3XEJMMFO3UE3Z5RMMKCWU35F7TCGGCF') enthalten.
Wie komme ich nun von diesen Hexstring, der ein Base32 encodierter SHA1 Hash ist, auf den urspünglichen SHA1 Hashwert ('4EEE44B18576E84DE7B163142B537D2FE6231845')?
Diesen Wert habe ich mittels einem Onlineconverter ermittelt (http://darkfader.net/toolbox/convert/).
Auch der ermittelte SHA1 Hashwert der Datei per Hashtab spuckt mir den SHA1 Hashwert '4EEE44B18576E84DE7B163142B537D2FE6231845' aus.
Miniaturansicht angehängter Grafiken
blaue_berge_167.jpg   unbenannt_132.png  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: unicodefähiges Base32Decode

  Alt 4. Feb 2010, 14:31
Zitat:
Ich habe nun folgende Verständnisschwierigkeit:
Base32 > Binär > Hex

also Base32Decode und danach vermutlich BinToHex ... es könnte eventuell noch passieren, daß zwischendurch die Bytereihenfolge gedreht werden muß

PS: Man könnte auch beides in ein einheitliches Binärformat bringen?
( Base32Decode und HexToBin )
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#17

Re: unicodefähiges Base32Decode

  Alt 7. Feb 2010, 15:25
Zitat:
Base32 > Binär > Hex
Genauso hab ich es gemacht.
Danke nochmal!
  Mit Zitat antworten Zitat
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 10:11 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