#include #include "ba_cmd.hh" #define DEBUG 1 namespace BreakAffinity { void BreakAffinity::runAfine(){ MathTools mt; CodecAfine codec; FreqAnalyser fa; Text cypherText = this->_config.getText(); Text plainText; int i; std::list tc; cypherText.setAlphabet(this->_config.getAlphabet()); int alpha_size = this->_config.getAlphabet().size(); std::vector prio_conf = this->_config.getPriorities(); // générer l'orbite de 26 std::list orb; for (i=1; i keyList; std::list::iterator orbIt; for (orbIt = orb.begin(); orbIt != orb.end(); orbIt++){ KeyAfine key; key.setCoefA((*orbIt)); for (i=0; i::iterator kLIt; for (kLIt = keyList.begin(); kLIt != keyList.end(); kLIt++){ float score = 0; printf("Trying key %s\n", (*kLIt).toString().c_str()); plainText = codec.decode(cypherText, *kLIt); plainText.setAlphabet(this->_config.getAlphabet()); for (int i=0; i<9; i++){ score += plainText.getCountOf(prio_conf[i]); } score = score / plainText.size(); if (fabs(score - this->_config.getFrequencies()) < this->_config.getEpsilon()){ printf(" KEY = %s\n",(*kLIt).toString().c_str()); printf(" PLAIN TEXT(%f) = %s\n",fabs(score-0.7),plainText.toAlphabet().c_str()); } } return ; } } #undef DEBUG