Bonjour, bonsoir à tous,
Je suis actuellement en terminale S et j'ai comme projet en isn de faire un programme qui permet de crypter decrypter du chiffrement affine. Pour faire simple voila en quoi consiste le chiffrement affine :Le chiffre Affine utilise une fonction de chiffrement par addition et multiplication (comme la fonction mathématiques affine) qui fait correspondre à une lettre L (de rang x dans un alphabet de 26 lettres) une autre lettre de rang (ax + modulo 26.
J'ai donc commencer un programme seulement la partie crytage pour le moment mais je ne comprends pas pourquoi il ne fonctionne pas.
Je veux par exemple transformer la phrase "lhomme" avec les coefficients "a" et "b" respectivement égaux à 7 et 13 mon programme m'affiche "CAXJJF" alors que quand je le fais à la main je trouve: "MKHTTP" si quelqu'un à une idée je suis preneur
code:
void main() {
clear();
int MessageInter [];
MessageInter = new int [100];
//Taille limitée à 100 pour le message à crypter
int i,c,a,b;
c = readInt("Tapez: 1 pour Cryptage | 2 pour Décryptage" );
a = readInt("quelle valeur de a voulez vous prendre?" );
b = readInt("quelle valeur de b voulez vous prendre" );
char alphabet_code [] [];
//déclaration du tableau
alphabet_code = new char [2] [100];
// deux colones 100 ligne
if (c ==1) {
String MessageClair;
// Déclaration des variables
String MessageCode = "";
//vaut 0
println("Texte à crypter ?" );
// Demande du message e
MessageClair = readString();
// demande le message a coder
println("Le message à crypter est" + "\n" + MessageClair);
// On sépare chaque caractère du message et on met son code ascii décalé de 65 dans le tableau
for (i =0; i <= MessageClair.length() -1; i ++) {
//message en lettre transformé en chiffre
MessageInter = (int)(MessageClair.charAt(i));
}
for (i =0; i <= MessageClair.length() -1; i ++) {
MessageCode = MessageCode + (char)((((a * MessageInter) -65 + %26) +65);
//prend la première lettre transformée
//de chiffre fais - 65
//(pour mettre a=0) puis clef donne le décalage ,
//modulo 26 pour etre compris dans l'alphabet + 65 pour repasser en ascii
}
// Affichage du résultat.
println("Le cryptogramme est" + "\n" + MessageCode);
}
}
isn cryptage.java