Avatar billede justincase1089 Nybegynder
05. september 2002 - 11:22 Der er 11 kommentarer og
1 løsning

Kryptering af string

Hejsa

Jeg leder efter en smaet lille måde at kryptere en string, der kan implementeres i både Delphi og C++, dvs, det skal ikke være en 3parts komponent. Jeg vil imidlertid gerne have kode i Delphi.

Franz
Avatar billede lanstorp Nybegynder
05. september 2002 - 11:41 #1
http://www.eksperten.dk/spm/198424
Søg på kryptering her på delphi eksperten.
Avatar billede loke-liscom Nybegynder
05. september 2002 - 11:43 #2
Hvor sikker skal din kryptering være? Man kan næsten opdele det i katagorier.

Du kan bruge almindelig randseed kryptering, den er ikke nødvendigvis let at bryde men det er muligt og det er reletivt let at gøre.

Du kan også definere en nøgle som du så pr. telefon eller mund til mund formidler. hvis nøglen ikke er logisk opbygget og lige så lang eller længrer end strengen vil det ikke være muligt at bryde den. Det kræver bare at personen kender den.

Der er også mange andre muligheder hvor man ikke ønsker at brugeren behøver at kende nøglen men evt. et kodeord. De kræver at man med matematik prøver at lave en nøgle som ikke er alt for logisk opbygget. De vil ALTID være mulige at knække men det er stadig svært om ikke umuligt for en almindelig eller erfaren bruger at bryde. Det vil under alle omstændigheder kræve en masse erfaring og viden om kryptering og ikke mindst cpu-kraft.
Avatar billede loke-liscom Nybegynder
05. september 2002 - 11:57 #3
Prøv det her, det er en randseed cryptering. Du bestemmer selv Rs det der en form for nøgle.... eller ikke.... nå, den skal bare være den samme når du kryptere og dekryptere. st er henholdsvis den krypterede streng og den streng der skal krypteres.

eks.
var
  tmp : string;
begin
  st := 'test';
  tmp := CtyptDecrypt(st,12345);
  memo1.lines.add('krypteret: '+tmp);
  memo1.lines.add('Dekrypteret: '+CtyptDecrypt(tmp,12345));
end;

function CtyptDecrypt(st : string; RS : integer) : string
var
  i : integer;
  tmp : string;
begin
  randseed := RS;
  SetLength(tmp,Length(St));
  for i := 1 to length(st) do
    tmp[i] := chr(ord(st[i]) xor random(256));
  result := tmp;
end;
Avatar billede loke-liscom Nybegynder
05. september 2002 - 11:58 #4
Nu ikke blive sur hvis der er små fejl i koden... jeg sad ikke foran delphi da jeg skrev det.
Avatar billede loke-liscom Nybegynder
05. september 2002 - 12:05 #5
en meget simpel kryptering med en nøgle.

var
  tmp : string;
begin
  st := 'test';
  tmp := CtyptDecrypt(st,'Nogle tilfældige tal eller bukstaver');// jo mere tilfældige jo bedrer!!!
  memo1.lines.add('krypteret: '+tmp);
  memo1.lines.add('Dekrypteret: '+CtyptDecrypt(tmp,'Nogle tilfældige tal eller bukstaver'));
end;

function CtyptDecrypt(st : string; noegle : string) : string
var
  i,a : integer;
  tmp : string;
begin
  SetLength(tmp,Length(st));
  a := 0;
  i := 0;
  repeat
    inc(a);
    if a > Length(noegle) then a := 1;
    inc(i);
    tmp[i] := chr(ord(st[i]) xor ord(noegle[a]));
  until i >= Length(st);
  result := tmp;
end;
Avatar billede loke-liscom Nybegynder
05. september 2002 - 12:08 #6
i det sidste eks.
hvis din nøgle er 100% tilfældig, den er længere eller lige så lang som strengen og du kun kryptere en streng så vil den være umulig at bryde da den krypterede streng ville kunne blive til hvad som helst. Du skal selvfølgelig også tænke på at der ikke nå være andre end dig og modtager der har nøglen.
Avatar billede justincase1089 Nybegynder
05. september 2002 - 13:00 #7
Super måde. Og den er også let at implementer i C++
Avatar billede loke-liscom Nybegynder
05. september 2002 - 13:08 #8
Jeg takker....
Avatar billede lanstorp Nybegynder
05. september 2002 - 13:36 #9
Avatar billede justincase1089 Nybegynder
06. september 2002 - 10:59 #10
loke-liscom: Set i bakspejlet skulle du egentlig ikke have pointene :).

Hvis vi tager dit eksempel:
1) Du giver inputstring, du kender ikke keystring du får outputstring
2) Du giver outputstringen, du kender ikke keystringen, men du får keystringen
3) Du har nu keystringen og kan dekryptere alle andre outputstrings. Det forudsætter, at du ved, at det er en xor der benyttes.

Justin Case
Avatar billede lanstorp Nybegynder
06. september 2002 - 13:39 #11
Det med at sætte sig ned og hjælpe en stranger på nettet, er vel altid noget værd. Om ikke andet et par pseudopoint. God weekend.
Avatar billede justincase1089 Nybegynder
06. september 2002 - 13:40 #12
Ja, det kan du have ret i. Det er heller ikke loke-liscom jeg kritiserer, det er min egen evne til at gennemskue, at det var forkert, det der blev skrevet.
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