Aujourd'hui, votre objectif est de décrypter un message secret à l'aide d' AES . Étant donné un texte chiffré et une clé, vous déchiffrerez et imprimerez le message.
Votre programme peut être dans n'importe quelle langue. Il sera exécuté avec une entrée sur stdin et sa sortie sur stdout sera vérifiée pour son exactitude.
La première ligne d'entrée sur stdin sera la clé de 16 octets, codée en hexadécimal. La deuxième ligne d'entrée sur stdin sera le texte chiffré de 16 octets, codé en hexadécimal.
La sortie du programme doit être le message de 16 octets après déchiffrement du texte chiffré en utilisant AES-128 avec la clé donnée. Vous devez sortir le résultat interprété comme des octets ASCII. Vous pouvez supposer que tout résultat est ASCII valide après le décryptage.
Vous ne pouvez pas utiliser de bibliothèque / fonctionnalités intégrées qui implémentent AES. Vous pouvez utiliser ces fonctionnalités pour convertir entre les encodages hexadécimaux / binaires / ASCII.
Le code le plus court en octets gagne.
Exemple d'entrée et de sortie:
bd8ab53f10b3d38576a1b9a15cf03834
02c0ee126cae50ba938a8b16f0e04d23
Attaque demain.
Et un autre:
f4af804ad097ba832906db0deb7569e3
38794338dafcb09d6b32b04357f64d4d
Toutes nos félicitations.
Réponses:
Python, 661 caractères
k
est la clé,c
est le texte chiffré. Je construis P, les pouvoirs de 3 sur le terrain, puisS
, la sbox.k
Est ensuite étendu avec le calendrier clé. Enfin, nous faisons le déchiffrement AES. Mixcolumns est la phase difficile, toutes les autres phases sont assez simples.la source