Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Kodierung ändern (https://www.delphipraxis.net/143266-kodierung-aendern.html)

MasterTobi 12. Nov 2009 18:43


Kodierung ändern
 
Hallo,

hab jetzt überall gesucht -.-

un zwar ich lade von einem ftp datein runter, früher waren die in ansi gespeichert

un konnte mit hilfe diesen code
Delphi-Quellcode:
  for x := 1 to length(pw) do
  begin
    pw[x] := Chr( BYTE(Ord(pw[x]) + (3 xor (X-1)) * ((X-1) mod 15)) );
    if Ord(pw[x]) >= 255 then
    begin
      pw[x] := Chr( Ord(pw[x]) - 256 );
    end;
  end;

   if 'Key='+pw = pass then
das passwort überprüfen

da sich jetzt die zeichenkodierung der datein in uft8 geändert hat funktioniert das nicht mehr

deshalb frag ich ob es eine möglichkeit gibt die heruntergeladene datei umspeichern kann, vorraussetzung ist das man es nicht sehen soll. geht das irgendwie

oder kann man den code ändern in utf8 ?

himitsu 12. Nov 2009 18:57

Re: Kodierung ändern
 
Man mag es kaum glauben, aber es gibt gleich in der System-Unit so Funktionen ala Utf8ToAnsi
(also diese Funktionen sind immer verfügbar, da automatisch eingebunden).

MasterTobi 12. Nov 2009 19:00

Re: Kodierung ändern
 
richtig die habe ich auch ma da eingebaut trozdem stimmt es nicht überein :(

himitsu 12. Nov 2009 19:03

Re: Kodierung ändern
 
Hmmm, dann wird wohl noch was anderes geändert sein, außer der Kodierung? :gruebel:

Oder nutzt du zufällig auch noch Delphi 2009+ ?

PS: wenn es dich wirklich um ANSI handelt, dann ist sowas wie if Ord(pw[x]) >= 255 then eigentlich sinnlos, da ein AnsiChar eh nur Werte mit maximal #255 aufnehmen kann.

MasterTobi 12. Nov 2009 19:06

Re: Kodierung ändern
 
nein leider nutze ich nur delphi 2005

alsowird es keine möglichkeit geben ?

himitsu 12. Nov 2009 19:15

Re: Kodierung ändern
 
- hat sich was an der Passwortberechnung verändert?
- haben sich ebentuell "falsche" Zeichen in die Dateien geschmuggelt
- ...

Delphi-Quellcode:
var pw: AnsiString;

pw := Utf8ToAnsi(pw);
for x := 0 to Length(pw) - 1 do
  pw[x+1] := AnsiChar(Byte(pw[x+1]) + (x xor $03) * (x mod 15));

if 'Key=' + pw = pass then
hab den Code mal etwas gekürzt
und ich glaub mit dem etwas verschobenen x fällt es besser auf, was genau berechnet wird.

MasterTobi 12. Nov 2009 19:37

Re: Kodierung ändern
 
die berechnung ist gleich geblieben
falsche zeichen auch nicht auser die utf8 codierung macht aus den ansi was anderes un wenn man dann wieder von utf8 in ansi geht werden die nochmal geändert

danke für die verkleinerung :) die funktioniert auch

nur das löst mein problem als nicht :(

himitsu 12. Nov 2009 19:51

Re: Kodierung ändern
 
Also, wenn es wirklich nur UTF-8-kodiert ist, dann sollte es nach der Dekodierung der selbe alte ANSI-Text rauskommen.


pass ist auch ein String/AnsiString oder ist das ebenfalls UTF-8?
Delphi-Quellcode:
if AnsiToUtf8('Key=' + pw) = pass then
// oder
if 'Key=' + pw = Utf8ToAnsi(pass) then

MasterTobi 12. Nov 2009 19:58

Re: Kodierung ändern
 
alles war ansi.

ok ich danke dir erstmal für deine hilfe, werden es aber nun etwas umbauen

trozdem THX


Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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