Je fais une simple S-Box en python, elle contient toutes les combinaisons 3 bits possibles en tant que clés et sa combinaison cryptée en tant que valeurs.
Il prendra essentiellement 3 bits de l'utilisateur, puis l'exécutera sur la table S-Box que j'ai définie, il trouvera alors la clé qui correspond aux bits d'entrée de l'utilisateur et affichera sa valeur cryptée strong >.
Exemple de code ci-dessous, pas le code complet;
Enter 3 bit pattern: 000 Encrypted combo: 110
Sortie:
SBox= { "000": "110","001": "010","010":"000","011": "100" }
inputBits= input("Enter 3 bit pattern: ")
if inputBits == "000":
print("Encrypted combo: ", SBox["000"])
Je veux pouvoir le faire plus efficacement, c'est à dire: sans avoir à avoir un if pour chaque combinaison possible, quelque chose de similaire à faire correspondre la chaîne d'entrée avec la clé du dictionnaire.
Toute aide est appréciée!
4 Réponses :
Utilisez dict.get
SBox= { "000": "110","001": "010","010":"000","011": "100" }
inputBits= input("Enter 3 bit pattern: ")
if SBox.get(inputBits):
print("Encrypted combo: ", SBox.get(inputBits))
#OR print("Encrypted combo: ", SBox.get(inputBits, "N\A"))
essayez .. sauf est utile dans cette condition
SBox= { "000": "110","001": "010","010":"000","011": "100" }
inputBits= input("Enter 3 bit pattern: ")
try:
if SBox[inputBits]:
print("Encrypted combo: ", SBox["000"])
except KeyError:
print("wrong bit pattern")
SBox= { "000": "110","001": "010","010":"000","011": "100" }
inputBits=input("Enter 3 bit pattern: ")
if inputBits in SBox:
print("Encrypted combo: {}".format(SBox.get(inputBits)))
else:
print("Invalid 3 bit pattern entered")
vous utilisez if inputBits dans Sbox et utilisez également SBox.get () , cela créera plus de temps d'utilisation au lieu de SBox.get (inputBits) code> vous pouvez utiliser Sbox [inputBits] pour plus rapide que l'actuel
La méthode dict.get () a un argument par défaut et le même peut être utilisé comme option de secours.
Si la clé passée par l'utilisateur est disponible dans le dictionnaire, alors la la valeur correspondante est renvoyée. Si leur clé n'existe pas, alors l'argument par défaut de la méthode dict.get () est renvoyé.
SBox= { "000": "110","001": "010","010":"000","011": "100" }
print(SBox.get(input("Enter the 3 bit pattern: "), "Invalid 3 bit pattern."))
SBox.get (inputBits)?Il vous manque un
)sur votre ligneprint, cela provoquera une erreur de syntaxe.Vous avez un
"100"supplémentaire à la fin du dictionnaire sans clé avant.