Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Алгоритм Шамира

32K
13 мая 2013 года
xface
43 / / 07.11.2009
Здраствуйте. Сделал алгоритм Шамира, но его нужно переделать под BigInteger. Пробовал заменить типы, но не получилось, поэтому прошу помощи. Спасибо. Вот код:

Код:
// x^y mod p
        public int fun(int p, int a, int b)
        {
            int s = 1;
            for (int i = 1; i <= b; i++)
            {

                s = (s * a) % p;
            }
            return s;
        }

        // Генерируем Ca, Da и Сb, Db
        public void Generate(ref int iA, ref int iB, int p)
        {
            iA = 1;
            iB = Rnd.Next(p);

            while (iA < p)
            {
                if ((iA * iB) % (p - 1) == 1)
                    return;
                iA = iA + 1;
            }
            if (iA == p)
                Generate(ref iA, ref iB, p);

        }

        private void button1_Click(object sender, EventArgs e)
        {
            string sKey;
            Random myrandom = new Random();
            int p = 127, cb = 1, ca = 1, da = 1, db = 1, k;

       
            Generate(ref da, ref ca, p);
            Generate(ref db, ref cb, p);

            sKey = textBox1.Text;

            textBox2.Clear();
            textBox3.Clear();
            textBox4.Clear();
            textBox5.Clear();
         
            for (int i = 0; i < sKey.Length; i++)
            {
                k = (int)sKey[i];
               
                // Step 1
                k = fun(p, k, ca);
                textBox2.Text = textBox2.Text + k.ToString()+".";
                // Step 2
                k = fun(p, k, cb);
                textBox3.Text = textBox3.Text + k.ToString() + ".";
                // Step 3
                k = fun(p, k, da);
                textBox4.Text = textBox4.Text + k.ToString() + ".";
                // Step 4
                k = fun(p, k, db);
                textBox5.Text = textBox5.Text + (char)k;

            }
        }
    }
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог