Avatar billede michael-schou Novice
06. maj 2002 - 10:09 Der er 5 kommentarer og
1 løsning

Crypt/DeCrypt af ListBox?

Når man gemmer en ListBox's linier, hvordan kan man så Crypter filen?

EKS :

ListBox1.Items.SaveToFile('ListBox1.txt);
Crypt('ListBo1.txt');

Når man åbner en ListBox's linier, hvordan kan man så DeCrypter filen?

EKS :

ListBox1.Items.LoadFromFile('ListBox1.txt);
DeCrypt('ListBo1.txt');

/Michael S
Avatar billede pellelil Nybegynder
06. maj 2002 - 10:16 #1
Hvis du vil krypere indholdet vil jeg foreslå at du aldrig bruger SaveToFile. I såfald vil din fil ligge ukrypteret "i tidsrummet" fra du har kaldt "SaveToFile" til "Crypt" er færdig.

Dine Crypt og Decrypt routiner kan således håndtere save og load af din file, og du kan evt. til formålet bruge BlockRead/BlockSave til at læse/skrive dine data.

Med hensyn til selve krypteringen så er der mange muligheder, men den simpleste er at Not'e hver byte. Denne "kryptering" er ikke svær at "knække" men hvis der blot er tale om almindelige "dumme" brugere så er det rigeligt. Ligeledes har det den fordel at samme routine kan bruges både til at kryptere og dekryptere
Avatar billede dkn Nybegynder
06. maj 2002 - 18:35 #2
(************************************************************)
function Decrypt( const sStr: String; Key: Word): String;
(************************************************************)
var
    I: LongInt;
begin
    Result := sStr;
    for I := 1 to Length(sStr) do begin
        Result[I] := Char(Byte(sStr[I]) xor (Key shr 8));
        Key := (Byte(Result[I]) + Key) * C1 + C2;
    end;
end;

(************************************************************)
function Encrypt( const sStr: String; Key: Word): String;
(************************************************************)
var
    I: LongInt;
begin
    Result := sStr;
    for I := 1 to Length(sStr) do begin
        Result[I] := Char(Byte(sStr[I]) xor (Key shr 8));
        Key := (Byte(sStr[I]) + Key) * C1 + C2;
    end;
end;

//Gem
Var
St:String;
begin
St := ListBox1.items.text;
ListBox1.Items.text := Encrypt(St, 10);
ListBox1.Items.SaveToFile('C:\Test.txt');
ListBox1.Items.text :=St ;
end;

//Load
ListBox1.Items.LoadFromFile('C:\Test.txt');
ListBox1.Items.text := Decrypt(ListBox1.Items.text, 10);
Avatar billede disken Nybegynder
08. maj 2002 - 08:05 #3
Hvad står C1 og C" for.
Avatar billede michael-schou Novice
08. maj 2002 - 09:21 #4
Hej dkn, jeg har prøvet din version og den virker fint men, når man Decryptere adder den en ny linie i listboxen!!!

C1 & C2 = Integer!
Avatar billede dkn Nybegynder
08. maj 2002 - 12:27 #5
Ok hvis du ved at der altid kommer en ny linie, kan du jo løse det på den dårlige måde ved bare at køre
Listbox1.items.Delete(Listbox1.items.count-1);
Efter du har decrypted
Avatar billede Slettet bruger
08. maj 2002 - 12:54 #6
hehe, dårlige måde.. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester