Проверка больших чисел на простоту

3528
знаков
0
таблиц
0
изображений

Министерство образования Республики Беларусь

Учреждение образования

«Брестский государственный технический университет»

Кафедра ИИТ

Лабораторная работа №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

 

Вывод: Изучили методы генераций больших простых чисел, а так же способы их проверки на простоту.


Информация о работе «Проверка больших чисел на простоту»
Раздел: Математика
Количество знаков с пробелами: 3528
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
56781
8
0

... достаточно подробно, обоснованно были бы изложены основные алгоритмы генерации простых чисел с примерами. Целью данной работы является: Разработать методическое пособие на тему «Генерация простых чисел» для специальности «Компьютерная безопасность» Тюменского государственного университета, включающее в себя теоретический материал, задания к практическим работам, указания к их выполнению и ...

Скачать
58010
1
511

... данных по сети. ЗАКЛЮЧЕНИЕ В рамках данного дипломного проектирования перед студентом Малышевым А.А. была поставлена задача: на основе алгоритма RSA для шифрования блоков данных, построить алгоритм и реализовать программный продукт для шифрования потоков данных. В результате выполнения дипломного проектирования был составлен принципиальный алгоритм для решения поставленной задачи. Далее он был ...

Скачать
44852
0
0

... в некоторых отношениях даже со сложными, дорого стоящими счетными машинами. [№1, стр.34-36, 39-40] Об арифметических действиях на счетах будет написано в главе 3. §2 Современные способы запоминания чисел. Самая простая система счисления – двоичная, так как она использует только две цифры: ноль и один. Именно такую систему счисления используют современные компьютеры. В основном из-за того, ...

Скачать
723413
0
0

... данных будет нести больше смысла, если его отсортировать каким‑либо образом. Часто требуется сортировать данные несколькими различными способами. Во‑вторых, многие алгоритмы сортировки являются интересными примерами программирования. Они демонстрируют важные методы, такие как частичное упорядочение, рекурсия, слияние списков и хранение двоичных деревьев в массиве. Наконец, сортировка ...

0 комментариев


Наверх