25. januar 2000 - 01:15Der er
12 kommentarer og 1 løsning
Hjælp til kryptering
Jeg skal have noget at vide om kryptering, hvilke udregninger bruger man og hvorledes bygges krypteringsproceduren op?
Jeg mener at der før har været et eller flere sprøgsmål om dette emne, men jeg gider ikke til at bladre alle de forgående sider igennem - og så får en af jer jo også point!
Jeg har lavet en lille basiscryptering til dig, du kan så ud fra den tilføje flere regneregler og lave den endnu mere kompleks, men som en start kan denne her bruges:
const C1 = 52845;
function Decrypt(const S: String): String; var I: byte; c: integer; Final: string; Key: Word; begin c:=length(S); Final:=''; for I := 1 to c do begin Key := (byte(S[I])) - C2; Final := Final + char(key); end; result:=final; end;
function Encrypt(const S: String): String; Var I: byte; c: integer; Final: string; Key: Word; begin c:=length(S); final:=''; for I := 1 to c do begin Key := (byte(S[I])) + C2; Final:=final + char(key); end; result:=final; end;
******************
Jeg har også lavet en lidt mere avanceret udgave der includerer password:
De to functions ser således ud:
Function Encrypt(Text: string; Masterkey: String):string; var Final: string; key,F1,H: word; I: byte; L,C1,C2: integer; begin F1:=0; H:=0; C1:=length(TEXT); C2:=length(MASTERKEY); Final:=''; For L:=1 to C2 do begin Key:=byte(masterkey[L]); F1:=F1 + key; end; {for} f1:=f1-byte(masterkey[1])*byte(masterkey[length(masterkey)]); F1:=F1-1000; for I:=1 to C1 do begin H:=H+I-1; Key := (byte(text[I])) + (I*I) - C2 - H; Key:=key + F1; Final:=final + char(key); end; {for} Result:=final; end; {function}
Function Decrypt(Text: string; Masterkey: String):string; var Final: string; key,F1,H: word; I: byte; L,C1,C2: integer; begin F1:=0; H:=0; C1:=length(TEXT); C2:=length(MASTERKEY); Final:=''; For L:=1 to C2 do begin Key:=byte(masterkey[L]); F1:=F1 + key; end; {for} f1:=f1-byte(masterkey[1])*byte(masterkey[length(masterkey)]); F1:=F1-1000; for I:=1 to C1 do begin H:=H+I-1; Key := (byte(text[I])) - (I*I) + C2 + H; Key:=key - F1; Final:=final + char(key); end; {for} Result:=final; end; {function}
Jeg havde ikke glemt dit spørgsmål, men eftersom jeg havde pøvet at finde ud af hvad dine const's var for nogle (og derfor ikke kunne bruge din hjælp til noget) i øvrigt synrtes jeg at det er påfaldende at en du har valgt at have den samme const som i et eks. fra et delphi archive! Men dermed ikke sagt at jeg ikke er tilfreds med din hjælp. Jeg tjekker lige om jeg kan få din procedures til at virke og så accepterer jeg.
Er der et eksempel i delphi der omhandler cryptering ?
De constanter jeg har vlagt er helt tilfældige, og tallet som er i konsanten er også bare et jeg har skrevet helt tilfældigt ..
Men, som jeg skrev lige før så så skal du ændre navnet på C1 til C2, det skyldes at jeg i det program hvor jeg har brugt ovenstående procedurer har haft flere constanter, og da jeg så lige skulle cutte ovenstående ud til dig, så kom jeg til at slette den forkerte ... sorry.
Og undskyld at jeg troede at du måske havde glemt dette spørgsmål, jeg synes bare der snart var gået lang tid siden jeg havde hørt fra dig sidst, og så har jeg også før været udsat for at nogen har lavet et spørgsmål hvor man har svaret på det og så hugger vedkommende bare svaret og giver sig selv pointene for det, og det synes jeg ikke er specielt fair ...
sorry :)
Med venlig hilsen Daniel Møller alias _DJ_ SGUFT Software E-mail: sguft@software.dk
hvis du anvender den øverste af mine krypteringsprocedurer, så skal du skrive:
Edit1.text:=encrypt(edit2.text);
på den måde vil den crypterede tekst fra Edit2 ende i Edit1.
hvis du anvender nummer 2 krypteringsprocedure, så skal du skrive:
Edit1.text:=encrypt(edit2.text,'password');
du gør så bare på samme måde hvis du ønsker at decryptere teksten
Mvh. _DJ_
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.