public string Decrypt(string message, CardanGrilleKey key) { // проверка ключа на четность // проверка вмещается ли сообщение return new Decrypter().Decrypt(message, key); }
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('_'); }
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); } }
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; }
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; } }