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:
A következő lépések keverve kerülnek alkalmazásra:
#!/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"); } }