Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Übersetzung AES S-Box Erstellung von C in Delphi (wenig Code) (https://www.delphipraxis.net/180508-uebersetzung-aes-s-box-erstellung-von-c-delphi-wenig-code.html)

Martin W 24. Mai 2014 23:01


Übersetzung AES S-Box Erstellung von C in Delphi (wenig Code)
 
Hatte ursprünglich eine Frage zur Erstellung der AES S-Box, Antwort war jedoch nur eine falsch definierte Variable. Wen es interessiert, hier der Code zur Erstellung der AES S-Box:

Delphi-Quellcode:
procedure TForm1.DoCalc;
var
  i: integer;
  logtable: array [0..255] of byte; // Log table
  exptable: array [0..255] of byte; // Log table
  a, c, s, x: Byte;
begin

  a := 1;
 
  for i := 0 to 255 do
    begin
      exptable[i] := a;
      c := a AND $80;
      a := a SHL 1;
      if (c = $80) then
        begin
          a := a xor $1b;
        end;

      a := a xor exptable[i];
      logtable[exptable[i]] := i; // Set the log table value
    end;

  exptable[255] := exptable[0];
  logtable[0] := 0;

  for i := 0 to 255 do
    begin

      if i = 0 then
        x := 0
      else
        x := exptable[(255 - logtable[i])];
 
      s := x;

      for c := 0 to 3 do
        begin
          s := (s SHL 1) OR (s SHR 7);
          x := x XOR s;
        end;

      x := x XOR 99;
      Memo1.Text := Memo1.Text + '0x' + IntToHex(x, 2) + ', ';

    end;

end;

Martin W 24. Mai 2014 23:08

AW: Übersetzung AES S-Box Erstellung von C in Delphi (wenig Code)
 
- bitte löschen, sorry -

himitsu 24. Mai 2014 23:42

AW: Übersetzung AES S-Box Erstellung von C in Delphi (wenig Code)
 
Tipp: Schalte in Indexprüfung in den Projektoptionen an, dann sagt dir Delphi, daß du auf einen Array-Index zugreifen wolltest, welchen es nicht gibt.

Aber die Bereichsprüfung mußt du hier mal auslassen, denn in dieser Code arbeitet absichtlich mit Überläufen, bzw. erspart es sich die Überläufe abzufangen,
denn das macht ja das Byte bereits, welches den Wertebereicht weit genug eingrenzt, im Gegensatz zu den Integern. :angel:


PS:
UINT = unsigned integer

unsigned int = Cardinal
signed int = Integer

Aber der Code arbeitet, an dieser Stelle (i), zum Glück mit beiden Varianten.


[edit]
Jetzt stell dir mal vor jemand hat ein ähnliches Problem, findet deinen Thread, aber nun ist die Frage und die Antwort weg
und somit fehlt ihm jetzt die Lösung, aber zumindestens die SBOX ist jetzt korrekt. :D

Martin W 25. Mai 2014 00:06

AW: Übersetzung AES S-Box Erstellung von C in Delphi (wenig Code)
 
Zitat:

Zitat von himitsu (Beitrag 1260128)
[edit]
Jetzt stell dir mal vor jemand hat ein ähnliches Problem, findet deinen Thread, aber nun ist die Frage und die Antwort weg
und somit fehlt ihm jetzt die Lösung, aber zumindestens die SBOX ist jetzt korrekt. :D

Ja, das stimmt, hier war leider meine Maus schneller als ich zu Ende gedacht habe :oops:

himitsu 25. Mai 2014 00:37

AW: Übersetzung AES S-Box Erstellung von C in Delphi (wenig Code)
 
Wie wäre es mit einem Trackball? :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz