AES Entschlüsselung Algorithmus

Werde ich um eine lange Geschichte kurz. Es ist schon eine Weile her, dass ich Sie umsetzen wollen, meine eigene AES-Verschlüsselung/Entschlüsselung Programm. Die Verschlüsselung Programm ging gut und verschlüsseln ohne irgendwelche Fehler oder seltsame Ausgang (Da habe ich im Vergleich mein Programm die Ausgabe mit arbeiten kommerzielle und Ergebnis war das gleiche).

Wikipedia war (ist) mein Führer in dieser Implementierung in die ich gelesen habe "Eine Reihe von reverse-Runden angewendet werden, um die Transformation Chiffretext zurück in die ursprüngliche plaintext mit dem gleichen Schlüssel."

Gibt es einige Module, die ich umgesetzt habe:

  1. Add round key
  2. Shift Zeilen
  3. Sub bytes
  4. Mix Spalte

Ich auch umgesetzt paar reverse Umsetzung der oben genannten Module:

  1. Reverse shift Zeilen
  2. Reverse Sub Byte
  3. Reverse Mix Spalte

HINWEIS: ich habe nicht implementieren reverse round-Taste da, Es ist XOR-ing der Klartext mit dem Schlüssel, und die umkehrfunktion von XOR XOR selbst (korrigiert mich, wenn ich falsch bin)

Also ich geputtet diese Module in der umgekehrten Reihenfolge, dass ich die Verschlüsselung, aber nie bekam ich mein nur-text zurück:

expandkey128(key);
rev_subbytes(data);  
rev_shiftrows(data);
addroundkey(data,key,10);

for(int i = 9; i>= 1; i--) { 
    rev_subbytes(data); 
    rev_shiftrows(data);
    rev_mixColum(data);
    addroundkey(data,key,i);
}

addroundkey(data,key,0);

//Please note that I also did from 0 to 10 ,
//instead of 10 to 0 and didn't workout

Und auch ich dachte , vielleicht sollte ich nicht umsetzen reverse Modell der Module, vielleicht habe ich die Module die ich habe-Verschlüsselung mit, nur in umgekehrter Reihenfolge; na was wohl? hat nicht funktioniert! :

expandkey128(key);
addroundkey(data,key,0);

for(int i = 1; i<= 9; i++) {
    subbytes(data); 
    shiftrows(data);
    mixColum(data);
    addroundkey(data,key,i);
}

subbytes(data);
shiftrows(data);
addroundkey(data,key,10);

So, hier ist die Frage: was ist falsch? || was ist die richtige Reihenfolge der Anwendung dieser so genannte Module oder Funktionen, wenn Sie?

  • haben Sie die Berechnung Ihrer s-box korrekt, Ursache, die Sie nicht verwenden können, die gleiche, die Sie verwenden für die Verschlüsselung ein. en.wikipedia.org/wiki/S-box Diese Anmerkung fehlt in der englischen Version in der wikipedia. werfen Sie einen Blick auf die Skillung direkt: csrc.nist.gov/publications/fips/fips197/fips-197.pdf Sie haben wollen, berechnen Sie die inverse s-box zu entschlüsseln.
  • Ja, bei rev_subbytes ich habe die Inverse S-box von Rijndael
  • es ist ein großartiges Werkzeug, ot-es: cryptool.de In dem, das Sie tun können eine beliebige transformation mit der hand. Vielleicht haben Sie zu debug-jeden Schritt, vielleicht hilft Ihnen das tool dabei mit, dass, um zu überprüfen, jeden einzelnen Schritt.
Schreibe einen Kommentar