Шифрование на C#

Тема в разделе ".NET", создана пользователем rfl36, 17 сен 2011.

  1. rfl36

    rfl36 Гость

    Народ, кто-нибудь может помочь в такой проблеме: делаю перестановочный шифр на c#, возникла проблема: каким-образом привязать значения каждого элемента ключа 3 2 5 7 4 6 1 к и исходному тексту. Н-р, исходный текст: "перестановочное шифрование", т.е. чтобы один символ ключа соответствовал символу исходного текста, чтобы в такое привязке заменить ключ на 1 2 3 4 5 6 7 и таким же образом заменились символы исходного текста, соответствующие каждому элементу ключа.

    Код (C++):
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    string[] abc = new string[99];// Порядок следования букв в ключе по алфавитному порядку
    int[] mass = new int[7];

    private void btn_shifr_Click(object sender, EventArgs e)
    {
    Shifrovanie();
    }
    private string get_abc(string key)
    {
    int i, j;
    string s;
    for(i = 0; i < key.Length - 1; i ++)
    for(j = 0; j < key.Length - i - 1; j++)
    if (key[j] > key[j + 1])
    {
    s = key;
    //делаем порядок ключа по возрастанию 12345678(Исходный 3257461)
    key = key.Remove(j, 2).Insert(j, s.Substring(j + 1, 1)).Insert(j + 1, s.Substring(j, 1));
    }
    return key;
    }
    private void Shifrovanie()
    {
    string[,] sh = new string[99, 99];

    int j, i, p, k, g;

    int pos = 0;
    string s = "";
    string str = "";
    string shifr = "";
    string x = "";
    txbx_alfKey.Text = get_abc(txbx_key.Text);
    //дополняем исходный текст точками до длины ключа
    while (txbx_openText.Text.Length % txbx_key.Text.Length != 0)
    txbx_openText.Text += ".";

    for (k = 0; k < txbx_key.Text.Length; k++)
    {
    //заносим ключ в массив
    g = Convert.ToInt32(txbx_key.Text.Substring(k, 1));
    mass[k] = g;
    }
    for (i = 0; i < txbx_openText.Text.Length; i++)
    {
    s = txbx_openText.Text.Substring(i, 1);
    //заносим исходный текст в массив
    abc[i] = s;
    if (i < txbx_key.Text.Length)
    pos++;
    else
    {
    pos = 0;
    }
    str += txbx_openText.Text.Substring(i, 1);
    }
    txbx_shifrText.Text = shifr.ToString();
     
Загрузка...

Поделиться этой страницей