示例#1
0
 private double eval(ADFGVX key)
 {
     threadingHelper.decryptions[taskId - 1]++;
     allPlain.length = 0;
     foreach (ADFGVXVector cipher in ciphers)
     {
         key.decode(cipher, interimCipher, plain);
         allPlain.append(plain);
     }
     allPlain.stats();
     return(6000.0 * allPlain.IoC1 + 180000.0 * allPlain.IoC2);
 }
示例#2
0
 public void decodeSubstitution(ADFGVXVector interim, Alphabet36Vector plain)
 {
     if (interim.length % 2 != 0)
     {
         //hack, to allow uneven length adfgvx texts
         interim.append("A");
     }
     plain.length = 0;
     for (int i = 0; i < interim.length; i += 2)
     {
         int v1 = interim.TextInInt[i];
         int v2 = interim.TextInInt[i + 1];
         if (v1 == -1 || v2 == -1)
         {
             plain.append(-1);
         }
         else
         {
             plain.append(this.substitutionInverseKey.TextInInt[v1 * 6 + v2]);
         }
     }
 }