Étape 9: Le Code : cryptage
pos_rotor3 += 1 ;
if(pos_rotor3 > 25)
{
pos_rotor3 = 0 ;
}
if(pos_rotor3 == spin_r3)
{
pos_rotor2 += 1 ;
if(pos_rotor2 > 25)
{
pos_rotor2 = 0 ;
}
if(pos_rotor2 == spin_r2)
{
pos_rotor1 += 1 ;
if(pos_rotor1 > 25)
{
pos_rotor1 = 0 ;
}
}
}
Cette fonction est essentiellement là toute la magie opère. Une valeur est entrée en plus des valeurs de rotor et l’offset du rotor est actuellement. Il sorties la lettre qui sortait de ce un rotor.
Ce n’est vraiment pas beaucoup plus qu’une possibilité de substitution de caractères simples. Une véritable machine Enigma avait déjà fait avec des fils à l’intérieur d’un rotor. Nous faisons cela plusieurs fois, une pour chaque rotor va vers l’avant, puis nous l’envoyer dans le réflecteur, puis retour dans les rotors.
int get_rotor_output (int index, la pourriture de char [], char rotIndex [], int pos_rot)
{
première chose que nous devons faire est d’ajouter la position du rotor à l’index de comprendre
quelle lettre, nous sommes vraiment sur
index += pos_rot ;
Si l’index est plus de 25, alors nous avons enveloppé autour de la fin du tableau
donc nous allons soustraire 26 de lui pour rejoindre le véritable caractère
if(index > 25)
{
index-= 26 ;
}
maintenant nous trouver l’index de la lettre dans l’alphabet
ex. de A = 0, B = 1, C = 2, etc..
puis nous saisir la lettre dans la même position dans le tableau de rotor
C’est comment nous faisons la substitution de caractères
char tmp_letter = pourriture [find_index (rotIndex, alpha[index])] ;
maintenant, nous obtenons l’index de la lettre qui a été sortie de l’alphabet
même idée que ci-dessus A = 0, B = 1., etc.
indice = find_index (alpha, tmp_letter) ;
Maintenant, nous soustrayons la position du rotor de l’index qui est sortie
indice = pos_rot ;
Si l’index est inférieur à 0, alors nous avons enveloppé hors le début
du tableau, donc nous allons ajouter 26 lui revenir dans le tableau
if(index < 0)
{
indice = 26 ;
}
maintenant nous allons retourner l’index
retour index ;
}
Remarque : L’image de cette étape est de Wikipedia