Esempio n. 1
0
        public string Decrypt(string message, CardanGrilleKey key)
        {
            // проверка ключа на четность
            // проверка вмещается ли сообщение

            return new Decrypter().Decrypt(message, key);
        }
Esempio n. 2
0
 public string Decrypt(string message, CardanGrilleKey key)
 {
     decryptMessage = new StringBuilder(new string('_', message.Length));
     this.message = new TableMessage(message, key.MatrixOrder);
     matrixSize = (key.MatrixOrder * key.MatrixOrder) / 4 * 4;
     messagePosition = 0;
     Travel(message, key);
     return decryptMessage.ToString().TrimEnd('_');
 }
Esempio n. 3
0
 protected void Travel(string message, CardanGrilleKey key)
 {
     //Position[] currentPositions = new Position[key.Positions.Length];
     //Array.Copy(key.Positions, currentPositions, key.Positions.Length);
     Position[] currentPositions = key.Positions.Select(p => (Position)p.Clone()).ToArray();
     TransformeIndexes(currentPositions, key.MatrixOrder);
     for (var i = 0; i < message.Length; i++)
     {
         // учесть первый поворот
         if (i != 0 && i % currentPositions.Length == 0)
             TurnPositions(currentPositions);
         var position = currentPositions[i % currentPositions.Length];
         ElementAction(position);
     }
 }
Esempio n. 4
0
 public string Encrypt(string message, CardanGrilleKey key)
 {
     matrixSize = (key.MatrixOrder * key.MatrixOrder) / 4 * 4;
     var additionalTable = message.Length % matrixSize == 0 ? 0 : 1;
     var encryptMessageSize = (message.Length / matrixSize + additionalTable) * matrixSize;
     encryptMessage = new TableMessage(new string('_', encryptMessageSize), key.MatrixOrder);
     this.message = message;
     
     messagePosition = 0;
     Travel(message, key);
     return encryptMessage.Result;
 }
Esempio n. 5
0
 private void encryptButton_Click(object sender, EventArgs e)
 {
     if (cipherSelectBox.SelectedIndex == 0)
     {
         var key = (int)keyBox.Value;
         var message = sourceTextBox.Text;
         var encryptedMessage = new AffineCipher().Encrypt(message, key);
         processedTextBox.Text = encryptedMessage;
     }
     else
     {
         var key = new CardanGrilleKey()
         {
             MatrixOrder = (int)keyBox.Value,
             Positions = currentKeyGrille.Select(p => new Position(p.X, p.Y)).ToArray()
         };
         var message = sourceTextBox.Text;
         var encryptedMessage = new CardanGrilleCipher().Encrypt(message, key);
         processedTextBox.Text = encryptedMessage;
     }
 }