Avatar billede kolme Nybegynder
25. januar 2000 - 01:15 Der 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!
Avatar billede dj Nybegynder
25. januar 2000 - 07:37 #1
Hejsa

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}

Avatar billede kim_bille Nybegynder
27. januar 2000 - 00:06 #2
dj> I den første func. hvad er C2 for noget?

Kim
Avatar billede dj Nybegynder
27. januar 2000 - 07:06 #3
Det er bare en konstant der er erklæret som en overordnet konstant:

const
c2 = 54321;

Det er sådan set bare en matematikværdi og kunne ligeså godt have været en integer, i dette tilfælde.
Avatar billede dj Nybegynder
28. januar 2000 - 18:30 #4
ehh.. kolme ?
Avatar billede kim_bille Nybegynder
28. januar 2000 - 21:53 #5
Ja, det er typisk enten glemmer folk de ha oprettet et spg eller også bruger de svaret og "glemmer" at give point

Kim
Avatar billede dj Nybegynder
28. januar 2000 - 22:09 #6
tsk tsk .. tjahh, sådan er nogen jo desværre ...
Avatar billede kim_bille Nybegynder
28. januar 2000 - 22:15 #7
Dj> lige en ting til hvad bruger du så C1 til i den første

Kritiske Kim :)
Avatar billede dj Nybegynder
28. januar 2000 - 22:28 #8
oups, C1 skulle have heddet C2 i guess :)
Avatar billede kolme Nybegynder
30. januar 2000 - 21:16 #9
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.
Avatar billede dj Nybegynder
31. januar 2000 - 11:37 #10
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
Avatar billede kolme Nybegynder
31. januar 2000 - 21:58 #11
Hej DJ
Jeg kan ikke lige finde ud af hvordan jeg skal gøre for at få krypteret f.eks teksten i en edit. Hvor skal jeg skrive det i proceduren?
Avatar billede kolme Nybegynder
31. januar 2000 - 22:00 #12
Ups, jeg kom til at acceptere, jeg ville først lige have spurgt om ovenstående spørgsmål. Jeg håber du vil hjælpe mig alligevel

Med Venlig Hilsen Kolme
Avatar billede dj Nybegynder
31. januar 2000 - 22:16 #13
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_
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