Programowanie w języku Delphi » Artykuły

Kodowanie Cesara

  • 2012-02-26 11:19
  • 13 komentarzy
  • 1166 odsłon
  • Oceń ten tekst jako pierwszy
Wszycy tutaj sie pokazują sposoby kodowania to ja tez pokaże - bardzo prosty... Oto on:

function Encode(S: String): String;
var  N: Integer; 
begin
  for N := 1 to Length(S) do // pętla od znaku 1 do konca wiersza
    Result := Result + Chr(Ord(S[N]) - 122) // tutaj jest zapisywany już gotowy znak w kodzie ASCII
end; 


function Decode(S: String): String;
var  N: Integer; 
begin
  for N := 1 to Length(S) do // pętla od znaku 1 do konca wiersza
    Result := Result + Chr(Ord(S[N]) + 122) // tutaj jest zapisywany już gotowy znak w kodzie ASCII
end;


To by było na tyle prawda że bardzo proste! Co prawda jest to metoda która obciąża komputer przy duzym tekscie ale czekam na opinie innych kolegów po fachu

13 komentarzy

Patryk27 2012-03-01 16:23

Jak znajdę trochę czasu, to jutro go poprawię i dodam parę różnych sztuczek, etc.związanych z tym algorytmem.

furious programming 2012-02-27 22:36

"czekam na opinie innych kolegów po fachu" - z całym szacunkiem, ale "koledzy po fachu" robią algorytmy kodujące / dekodujące wielokrotnie dłuższe od całego tego artykułu; Szyfr Cezara to nie szyfr, nie trzeba mieć komputera żeby to w kilka minut rozkodować; Mogłeś chociaż pokazać wszystkie sztuczki, jakie można robić inkrementując / dekrementując kod ASCII - to by był artykuł a tak, to nawet do gotowców się nie nadaje;

filet 2008-04-25 17:11

w gruncie rzeczy to wlasciwie jest sposob kodowania cezarem, a nie artykul na ten temat. nie latwiej wyslac usera do wikipedii? tam wiecej sie dowie i do tego jeszcze zrozumie o co chodzi, a nie bedzie mial gotowca... :/

szartur 2005-06-11 21:12

To jest artykuł? Sama nazwa artykuł mówi, że należy napisać coś na temat a nie przedstawić kawałek źródła. Szkoda że tak dużo ludzi zaśmieca ten dział. Proponuje przenieść to do gotowców. Łatwiej bedzię znaleźć.

ŁF 2005-05-08 15:25

i TO ma być artykuł??? przenieś to do gotowców, albo usuwam.

kslukasz 2005-05-04 19:05

Dobry sposób. Zachęcam do obejżenia artykułu mojego autorswa, na tej stronie pt. kodowanie danych.

J-23 2005-04-27 13:40

Witam ,kod faktycznie zawierał błędy lecz już to zostało poprawione pozdrawiam

z1mEk 2005-04-22 21:02

To kodowanie rzeczywiście jest bardzo proste - przesunięcie bajtu o -122. Ja mam nieco mocniejsze a równie proste rozwiązanie (wzorowane na algorytmie Vinegere'a).

function koduj(tekst: string; password: string; flag_code: boolean):string; // funkcja z trzema parametrami zwracająca string
    var i, len_pass: integer;
        tmp_str: string;
        byte_in, byte_out, byte_pass: byte; //deklaracja zmiennych
begin
     len_pass := Length(password); //długość klucza
     for i:=1 to Length(tekst) do //pętla "obiegająca" kodowany tekst
     begin
          byte_in := Ord(tekst[i]); //pobranie kolejnej litery kodowanego tekstu i zamiana na bajt
          byte_pass := Ord(password[i mod len_pass]); //pobranie kolejnej litery klucza i zamiana na bajt
          if flag_code then //sprawdzenie flagi (czy ma być kodowanie czy dekodowanie)
              byte_out := (byte_in + byte_pass) mod 256 //zakodowanie bajtu tekstu bajtem klucza i podzielenie tego modulo przez 256
          else
              byte_out := (256 + (byte_in - byte_pass)) mod 256; //rozkodowanie bajtu tekstu zakodowanego bajtem klucza...
           tmp_str:= tmp_str + Chr(byte_out); //doklejenie roz/zakodowanego bajtu do zmiennej tymczasowej tmp_str (z zamianą zmiennej byte na char)
     end;
     result := tmp_str; //wyprowadzenie rezultatu funkcji
end;


A oto zakodowany tekst, kto rozkoduje?: ?ÔŢÜÉn¨?°ŐÔp?Î

unfa 2005-03-16 18:21

Fakt, ale myślę, że jak któś chce łamać szyfry, to nie zajobi, że to może być taki banał :)

J-23 2005-02-22 22:30

Zgodze sie z tobą Arturze ze to jest prosty klucz do zlamania. Moim celem było pokazanie jak można zakodowac tekst i ten artykł kieruje do początkujących programistów

scorpion_pl 2005-03-01 15:58

Nie żebym się czepiał ale coś tu jest nie tak!

  • średniki ;
  • kod:=kod+char(key)-122) <-- albo o jeden nawias za dużo albo o jeden za mało, a poza tym \"Incompatible types: \'String\' and \'Integer\'.
Mi te błędy nie przeszkadzają początkującym programistom mogą przeszkadzać!

jas_dream 2005-02-21 18:59

umieśc kod w tagach <code=delphi></code>

Artur 2005-02-20 22:44

Moim zdaniem kodowanie bardzo łatwe do złamania:) i do poważniejszych zastosowań się nie nadaje (sorki ale każdy kto się na tym zna powie ci to)