DELPHI: Voorbeelde van enkripsie
 

1) Basiese enkripsie met die verandering van ordinale waardes van karakters

Verander teks deur die ORD-funksie te gebruik wat die ordinale (heelgetal) waarde van enige ASCII-karakter gee. Voeg dan 4 (of enige ander getal) by hierdie waarde en skryf die karakter terug deur die CHR-funksie te gebruik (wat die ASCII-karakter vir 'n bepaalde getalwaarde gee).

Byvoorbeeld die karakter 'a' sal 'e' word en 'b' sal 'f' word - karakters word vervang met die volgende karakter vier plekke vorentoe:
 
a b c d e f g h i j k l m n o p q r s t u v w x y z
e f g h i j k l m n o p q r s t u v w x y z { ¦ } ~

Die ordinale waarde van 'a', wat 97 is, word vermeerder na 101 (die ordinale waarde van 'e').

'n Moontlike oplossing vir hierdie program is waar die waardes geënkodeer word deur die ordinale waarde van elke karakter met vier te vermeerder en dit dan weer gedekodeer word na die oorspronklike teks:

procedure TForm1.Button1Click(Sender: TObject);
var
  sInput : String;
  iCount, iLength : Integer;
begin
  sInput := Edit1.Text;
  iLength := Length(sInput);
  form1.caption := chr(101);
  FOR iCount := 1 to iLength do
  begin
    sInput[iCount] := chr(ord(sInput[iCount])+4);  //Enkodering
  end;
  Label1.caption := sInput;  //Vertoon geënkodeerde teks

//Dekodering
//Sal gewoonlik in aparte prosedure geplaas word

  FOR iCount := 1 to iLength do 
  begin
    sInput[iCount] := chr(ord(sInput[iCount])-4);
  end;
  Label2.caption := sInput;
end;

end.

 

2) Enkripsie met teks in 'n twee dimensionele skikking

Bereken die lengte van 'n boodskap en rond dit af tot die volgende veelvoud van tien. Skryf die boodskap in rye van tien karakters elk. Die boodskap word dan gelees van bo na onder in die kolomme en dan van links na regs om die geënkodeerde teks te skep.

Die hutskarakter (hash / #) vervang al die spasies en vul die teks op tot 'n veelvoud van tien.

Byvoorbeeld die teks: "This is an encryption program that encodes text." sal voorgestel word as:
 

T h i s # i s # a n
# e n c r y p t i o
n # p r o g r a m #
t h a t # e n c o d
e s # t e x t . # #

Die teks bestaan uit 48 karakters (met spasies tussenin) daarom moet twee hutskarakters aan die einde bygevoeg word om die tekslengte tot 50 af te rond. Om die geënkodeerde boodskap te kry word die teks dan van bo tot onder en dan van links na regs gelees.

Die geënkodeerde teks is dan:
T#ntehe#hsinpa#scrtt#ro#eiygexsprnt#tac.aimo#no#d#

'n Moontlike oplossing vir hierdie voorbeeld is:

var
  Form1: TForm1;
  arrMessage : array[1..10,1..100] of char; //2D-skikking

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  sInput, sEncode : String;
  iCount, iLength, iHashNeed, iRow, iCol, iTotal, iWCount : Integer;

begin
  RichEdit1.Clear;
  iHashNeed := 0;
  sInput := Edit1.Text;
  iLength := Length(sInput);
  if iLength MOD 10 <> 0 then //Bepaal of # nodig is
  begin
    iHashNeed := (((iLength DIV 10) + 1) * 10) - iLength;
    FOR iCount := 1 to iHashNeed DO
      sInput := sInput + '#'
  end;

  FOR iCount := 1 to iLength DO //Verander spasies na #'e
  begin
    if sInput[iCount] = ' ' then
    sInput[iCount] := '#';
  end;

  iTotal := length(sInput) DIV 10;

  iWCount := 0;

  //Boodskap word in 10 kolomme gelees
  FOR iRow := 1 to iTotal do
  begin
    FOR iCol := 1 to 10 do
    begin
      iWCount := iWCount + 1;
      arrMessage[iCol, iRow] := sInput[iWCount];
    end;
  end;

  //Lees boodskap en vertoon in een lyn
  sEncode := '';
  FOR iCol := 1 to 10 do
  begin
    FOR iRow := 1 to iTotal do
    begin
      sEncode := sEncode + arrMessage[iCol, iRow]
    end;
  end;

  RichEdit1.Lines.add(sEncode);
end;

end.

 


Voorbeeldoefeninge

a) Gebruik voorbeeld 2 en skep 'n program wat 'n geskepte funksie gebruik wat die ingevoegde teks enkodeer. Die gebruiker moet ook die aantal kolomme wat gebruik is, spesifiseer.

b) Skep 'n program waarin 'n tekslêer sowel as 'n nuwe lêernaam aangedui kan word. Die prorgram moet dan die boodskap in die tekslêer enkodeer en skryf na die nuwe lêer.


 

Terug na Delphi-hulpbronindeks




Terug na Tuisblad

© JAK Olivier (2008)

Webwerf: http://www.jako.nom.za/
E-pos: olivier@teachitza.com