Heute ist es Ihr Ziel, eine geheime Nachricht mit AES zu entschlüsseln . Mit einem Chiffretext und einem Schlüssel entschlüsseln und drucken Sie die Nachricht.
Ihr Programm kann in einer beliebigen Sprache sein. Es wird mit Eingabe auf stdin ausgeführt und seine Ausgabe auf stdout wird auf Richtigkeit überprüft.
Die erste Eingabezeile in stdin ist der 16-Byte-Schlüssel, der hexadezimal codiert ist. Die zweite Eingabezeile in stdin ist der 16-Byte-Chiffretext, der hexadezimal codiert ist.
Die Ausgabe des Programms muss die 16-Byte-Nachricht sein, nachdem der Chiffretext mit AES-128 mit dem angegebenen Schlüssel entschlüsselt wurde. Sie müssen das als ASCII-Oktett interpretierte Ergebnis ausgeben. Sie können davon ausgehen, dass jedes Ergebnis nach dem Entschlüsseln als ASCII gültig ist.
Sie dürfen keine Bibliothek / integrierten Funktionen verwenden, die AES implementieren. Sie können solche Funktionen verwenden, um zwischen Hex- / Binär- / ASCII-Codierungen zu konvertieren.
Der kürzeste Code in Bytes gewinnt.
Beispiel für Ein- und Ausgabe:
bd8ab53f10b3d38576a1b9a15cf03834
02c0ee126cae50ba938a8b16f0e04d23
Morgen angreifen.
Und ein anderer:
f4af804ad097ba832906db0deb7569e3
38794338dafcb09d6b32b04357f64d4d
Herzliche Glückwünsche.
quelle
Antworten:
Python, 661 Zeichen
k
ist der Schlüssel,c
ist der Chiffretext. Ich baue P, die Potenzen von 3 im Feld, dannS
die sbox. Dannk
wird mit dem Schlüsselplan erweitert. Schließlich führen wir die AES-Entschlüsselung durch. Mixcolumns ist die harte Phase, alle anderen Phasen sind ziemlich einfach.quelle