Проверка больших чисел на простоту
Изучение основных подгрупп алгоритмов проверки простоты больших чисел: детерминированные и вероятностные проверки. Исследование методов генерации и проверки на простоту больших чисел с помощью метода Ферма (малая теорема Ферма), составление программы.
Рубрика | Математика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 27.12.2010 |
Размер файла | 11,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Министерство образования Республики Беларусь
Учреждение образования
«Брестский государственный технический университет»
Кафедра ИИТ
Лабораторная работа №4
По дисциплине «Криптография»
По теме «Проверка больших чисел на простоту»
Выполнила Студентка III курса
Группы ИИ-5 Олехник Е.В.
Проверил Хацкевич М.В.
Брест 2010
Тема: Проверка больших чисел на простоту. Метод Ферма.
Цель: Изучить методы генерации и проверки на простоту больших чисел.
Ход работы:
Листинг программы:
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Tania_KMZILab3
{
classProgram
{
staticvoid Main()
{
BigInteger bigInteger;
do
{
SelfDecimatedGenerator generator = newSelfDecimatedGenerator(98); // в конструкторе задаёт длину числав битах
bigInteger = newBigInteger(generator.Generate(), 2); // создаём боооольшое число передаём как первый параметр сроку второй 2-это значит двоичная система
}
while (!Ferma.FermatLittleTest(50, bigInteger));
Console.WriteLine(bigInteger); // вывод на консоль числа
Console.WriteLine(Ferma.FermatLittleTest(50, bigInteger));
Console.ReadKey(); // ожидание нажатия клавиши с консоли
}
}
}
Ferma.cs
using System;
namespace Tania_KMZILab3
{
staticclassFerma
{
staticpublicbool FermatLittleTest(int confidence, BigInteger thisVal)
{
if ((thisVal % 2) == 0)
returnfalse;
int bits = thisVal.bitCount();
BigInteger a = newBigInteger();
Random rand = newRandom();
for(int round = 0; round < confidence; round++)
{
SelfDecimatedGenerator generator = newSelfDecimatedGenerator(40); // в конструкторе задаёт длину числав битах
a = newBigInteger(generator.Generate(), 2);
BigInteger expResult = a.modPow(thisVal - 1, thisVal);
if(expResult != 1)
{
returnfalse;
}
}
returntrue;
}
}
}
SelfDecimatedGenerator.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Tania_KMZILab3
{
classSelfDecimatedGenerator
{
privateLFSR lfsr;
privateint k = 10;
privateint d = 23;
public SelfDecimatedGenerator(int length
{
lfsr = newLFSR(length);
lfsr.UseRegister();
}
publicstring Generate()
{
if (lfsr.Quantity())
{
for (int i = 0; i < k; i++)
lfsr.UseRegister();
}
else
{
for (int i = 0; i < d; i++)
lfsr.UseRegister();
}
string bitString = "";
for (int i = 0; i < lfsr.GetBits().Length; i++)
{
if (lfsr.GetBits()[i] == true)
bitString += "1";
else
bitString += "0";
}
return bitString;
}
}
}
LFSR.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace Tania_KMZILab3
{
classLFSR
{
privateBitArray Array;
privatebool outBit;
publicBitArray GetBits()
{
return Array;
}
public LFSR(int lenght)
{
Array = newBitArray(lenght);
Random rnd = newRandom();
for (int i = 0; i < lenght; i++)
{
if ((rnd.Next(0, 1000) % 2) == 0)
{
Array[i] = true;
}
else
{
Array[i] = false;
}
}
}
publicvoid UseRegister()
{
bool feedBack;
feedBack = Array.Get(15) ^ Array.Get(10) ^ Array.Get(15) ^ Array.Get(12);
outBit = Array.Get(Array.Length - 1);
for (int i = 0; i < (Array.Length - 1); i++)
{
Array.Set(Array.Length - i - 1, Array.Get(Array.Length - i - 2));
}
Array.Set(0, feedBack);
}
publicbool Quantity()
{
if (outBit == false)
{
returnfalse;
}
elsereturntrue;
}
}
}
Работа программы:
76852633312072762368612999781
True
62106168008639652108721361597
True
34503197996314167362452631497
True
Вывод: Изучили методы генераций больших простых чисел, а так же способы их проверки на простоту.
Подобные документы
Теорема Бернулли как простейшая форма закона больших чисел. Предельные теоремы теории вероятностей и объяснение природы устойчивости частоты появлений события. Качественные и количественные утверждения закона больших чисел, его практическое применение.
курсовая работа [75,2 K], добавлен 17.12.2009- Закон больших чисел. Проверка статистических гипотез (критерий согласия w2 Мизеса: простая гипотеза)
Предельные теоремы теории вероятностей. Сходимость последовательностей случайных величин и вероятностных распределений. Метод характеристических функций. Закон больших чисел. Особенности проверки статистических гипотез (критерия согласия w2 Мизеса).
курсовая работа [1,0 M], добавлен 27.01.2012 Алгоритм Миллера-Рабина и малая теорема Ферма. Псевдопростые числа, тест на простоту. Криптографический алгоритм шифрования с открытым ключом и цифровой подписью. Создание открытого и секретного ключей. Режим подписи сообщения и способы ее проверки.
реферат [65,1 K], добавлен 12.12.2009Поиски и доказательства простоты чисел Мерсенна. Окончание простых чисел Мерсенна на цифру 1 и 7. Вопрос сужения диапазона поиска. Эффективный алгоритм Миллера-Рабина. Разделение алгоритмов на вероятностные и детерминированные. Числа джойнт ряда.
статья [127,5 K], добавлен 28.03.2012Проблема универсального генератора простых чисел. Попытки создания формул для нахождения простых чисел. Сущность теоремы сравнений. Доказательство "Малой теоремы Ферма". "Золотая теорема" о квадратичном законе взаимности. Генераторы простых чисел Эйлера.
реферат [22,8 K], добавлен 22.03.2016Представление доказательства неравенства Чебышева. Формулирование закона больших чисел. Приведение примера нахождения математического ожидания и дисперсии для равномерно распределенной случайной величины. Рассмотрение содержания теоремы Бернулли.
презентация [65,7 K], добавлен 01.11.2013Идея элементарного доказательства великой теоремы Ферма исключительно проста: разложение чисел a, b, c на пары слагаемых, группировка из них двух сумм U' и U'' и умножение равенства a^n + b^n – c^n = 0 на 11^n (т.е. на 11 в степени n, а чисел a, b, c на 1
статья [12,9 K], добавлен 07.07.2005Методи перевірки чисел на простоту: критерій Люка та його теореми, їх доведення. Теорема Поклінгтона та її леми. Метод Маурера - швидкий алгоритм генерації доведених простих чисел, близьких до випадкового та доведення Д. Коувером і Дж. Куіскуотером.
лекция [138,8 K], добавлен 08.02.2011Два варианта доказательства теоремы. Приведенные преобразования равенства Ферма над множеством натуральных чисел показывают, что с помощью конечного числа арифметических действий оно всегда приводится к тождеству, что и доказывает теорему.
статья [74,0 K], добавлен 14.04.2007Знакомство с Пьером де Ферма - французским математиком, одним из создателей аналитической геометрии, математического анализа, теории вероятностей и теории чисел. Разработка способов систематического нахождения всех делителей числа. Великая теорема Ферма.
презентация [389,1 K], добавлен 16.12.2011