oktatas:programozas:algoritmusok:aes
Tartalomjegyzék
AES
- Szerző: Sallai András
- Copyright © 2014, Sallai András
- Szerkesztve: 2014, 2020
- Licenc: CC BY-SA 4.0
- Web: https://szit.hu
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
- kulcs előállítása - Rijndael-féle módszer
- előkészítés
- AddRoundKey
- több ciklusban
- SubBytes
- ShiftRows
- Mixcolumns
- AddRoundKey
- befejezés
- SubBytes
- ShiftRows
- 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