Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:algoritmusok:aes

< Algoritmusok

AES

Az AES algoritmusról

Advanced Encryption Standard

Az AES szimmetrikus kulcsú titkosítás.

A U.S. National Institute of Standards and Technology által meghirdetett versenyre beküldött eljárás, 2001-ben.

A blokkméret szigorúan 128 bit, a kulcs pedig 128, 192, vagy 256 bit.

A titkosítás során a használt ciklusok:

  • 10 ciklus 128 bites kulcs esetén
  • 12 ciklus 192 bites kulcs esetén
  • 14 ciklus 256 bites kulcs esetén

Lépések

A következő lépések keverve kerülnek alkalmazásra:

  • AddRoundKey - minden bájton bitenkénti XOR művelet
  • SubBytes - minden bájt helyettesítése egy helyettesítési tábla egy értékére
  • ShiftRows - soronként különböző mértékkel eltolás
  • MixColumns - minden oszlopot invertálható lineáris transzformáció szerint változtatunk

Lépések

  1. kulcs előállítása - Rijndael-féle módszer
  2. előkészítés
    1. AddRoundKey
  3. több ciklusban
    1. SubBytes
    2. ShiftRows
    3. Mixcolumns
    4. AddRoundKey
  4. befejezés
    1. SubBytes
    2. ShiftRows
    3. AddRoundKey

Oszlopkeverés Perl nyelven

oszlopMix.pl
#!/usr/bin/perl
 
my @bOszlop = ();
my @aOszlop = (0xd4, 0xbf, 0x5d, 0x30);
 
@bOszlop[0] = 
	&szoroz(0x2, @aOszlop[0]) ^ 
	&szoroz(0x3, @aOszlop[1]) ^
	&szoroz(0x1, @aOszlop[2]) ^ 
	&szoroz(0x1, @aOszlop[3]);
 
@bOszlop[1] =
	&szoroz(0x1, @aOszlop[0]) ^
	&szoroz(0x2, @aOszlop[1]) ^
	&szoroz(0x3, @aOszlop[2]) ^
	&szoroz(0x1, @aOszlop[3]);
 
@bOszlop[2] =
	&szoroz(0x1, @aOszlop[0]) ^
	&szoroz(0x1, @aOszlop[1]) ^
	&szoroz(0x2, @aOszlop[2]) ^
	&szoroz(0x3, @aOszlop[3]);
 
@bOszlop[3] =
	&szoroz(0x3, @aOszlop[0]) ^
	&szoroz(0x1, @aOszlop[1]) ^
	&szoroz(0x1, @aOszlop[2]) ^
	&szoroz(0x2, @aOszlop[3]);
 
foreach $hexSzam (@bOszlop) {
	printf("%02x\n",  $hexSzam);	
}
 
 
sub szoroz {
	$matrixElement = @_[0];
	$szam = @_[1];
 
	if($matrixElement eq 1) {
		return $szam;
	}elsif($matrixElement eq 2) {
		my $eltoltSzam = $szam << 1;
		if($eltoltSzam> 0xff) {
			$eltoltSzam = $eltoltSzam ^ 0x11b;
		}
		return $eltoltSzam;
	}elsif($matrixElement eq 3) {
		my $eltoltSzam = $szam << 1;
		if($eltoltSzam > 0xff) {
			$eltoltSzam = $eltoltSzam ^ 0x11b;
		}
		return $eltoltSzam ^ $szam;
	}else {
		print("Hiba! Rossz szorzó!\n");
	}
}
oktatas/programozas/algoritmusok/aes.txt · Utolsó módosítás: 2023/08/20 23:31 szerkesztette: admin