19. december 2002 - 08:58Der er
7 kommentarer og 1 løsning
Simpel kryptering af filer
Hej alle.
Til et lille projekt jeg arbejder på skal jeg kunne gemme nogle filer, som indeholder data. Ligeledes skal jeg selvfølgelig kunne loade dem igen. Som det er nu gemmer jeg mit data som ren tekst, hvor de er linie og kommasepareret. Mit problem er at enhver kan uden problemer gå ind og se indholdet, og redigere i det. Jeg har derfor brug for at kryptere det. Det er på ingen måde "usikre" data, og det skal derfor bare være en let løsning, så den gennemsnitlige bruger ikke kan bryde det.
jeg har for år tilbage lavet en hjemmestrikket kryptering, som virkede, men der opstod senere det problem for migselv, at jeg havde brug for at læse filen ("bagom") og det gav problemer, for jeg kunne sku' ik' huske algoritmen i hovedet !
på den baggrund vil jeg anbefale, at du ikke krypterer din txt-fil, hvis du selv har brug for at kunne læse indholdet og at indholdet ikke er fortroligt - tilføj så istedet en slags nonsenstotal i bunden af filen, som du så checker ved indlæsning - giver resultatet noget andet end det du forventer (beregner), så er filen blevet ændret ulovligt !!!
læg f.eks. alle tegnenes ascii-værdier sammen og tillæg evt. et selvvalgt tal ... og skriv resultatet i bunden.. det har jeg god erfaring med !
Jordens simpleste kryptering er en Randseed kryptering. Algoritmen er XOR og nøglen random, det er da let at huske. Jeg har lavet et eks. til dig. Husk altid at kryptere/dekryptere de samme data over den samme nøgle(Randseed). Foredelen er at det et hurtigt let og ikke nødvendigvis så let at knække..
procedure Crypt_Decrypt(RandS : LongInt; Data : Pbyte; DataSize : LongInt); var i : integer; begin randseed := RandS; for i := 1 to DataSize do begin Data^ := Data^ xor random(256); inc(Data); end; end;
og et eks. på hvordan du kan bruge den.
procedure TForm1.Button1Click(Sender: TObject); var Data : string; begin Data := 'Denne streng skal snart krypteres...'; Crypt_Decrypt(1235,@Data[1],Length(Data)); memo1.lines.add('Krypteret : '+Data);
Jeg bruger den altid når jeg skal gøre tekst "ulæseligt". Man har jo tit brug for at tekst ikke skal fremstå som tekst. Jeg vil ikke garantere for hvor sikker den er men man skal jo "prøve" sig frem for at finde den rigtige randseed og den kan have 4294967295 forskællige værdier. og ud over det skal man jo kende en eller flere værdier i dataene.
procedure TForm1.Button1Click(Sender: TObject); var Res : integer; Data : string; fil1, fil2 : file; begin assignfile(fil1,'c:\noget.txt'); assignfile(fil2,'c:\nogetc.txt'); reset(fil1,1); rewrite(fil2,1);
repeat SetLength(Data,102400); blockread(fil1,Data[1],102400,res); Crypt_Decrypt(987654,@Data[1],res); blockwrite(fil2,Data[1],res); until res <> 102400;
Det var klaus's funktion jeg fik til at virke, tak for den :). Den virker perfekt, og sikkerhed er ikke et issue på nogen måde, så den er alt rigeligt.
Synes godt om
Ny brugerNybegynder
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.