Алгоритми факторизації складених чисел

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
РТ
Кафедра:
Кафедра захисту інформації

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмічні основи криптології
Група:
БІ

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА кафедра захисту інформації З В І Т до лабораторної роботи №4 з курсу: “Алгоритмічні основи криптології ” на тему: “Алгоритми факторизації складених чисел” Варіант № 25 1. Мета роботи. 2. Повний текст завдання. 3. Блок-схема алгоритму. 4. Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі, та їх пояснення. 5. Остаточно відлагоджений текст програми згідно з отриманим завданням . 6. Результати виконання програми. 1. Мета роботи Вивчити основні алгоритми факторизації складних чисел. 2. Завдання Реалізувати програму, що дозволяє знаходити розкладання на множники заданого числа n комбінованим методом: р-Полларда і пробних ділень; 3. Блок-схема алгоритму randomNumber(int n) factorise(int n) check(int secondDiv) SCD(int firstNumber, int secondNumber) button1_Click(object sender, EventArgs e) 4. Cписок ідентифікаторів констант, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення. massDiv – масив типу int, що приймає значення дільників; j, x, oldx, d – змінні типу int, що використовуються у методі р-Полларда; n — змінна, що факторизується; correction — змінна, що відповідає за точність результату; randomNumber()– метод, що генерує випадкове число; check()– метод логічного типу, що повертає відповідне значеня в залежності від числа; factorise ()– метод р-Полларда факторизації складного числа; SCD ()– метод, що повертає найменше спільне кратне двох чисел; Form1_Load ()– метод, що виконується безпосередньо післа завантаження програми; button1_Click () – метод, який виконує моделацію натиску на програмну кнопку; 5. Текст програми using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace k2_s2_lab4 { public partial class Form1 : Form { public static List<int> massDiv = new List<int>(); public static int massDivLength; public static int j, x, oldx, d, n; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int temp; textBox2.Text = ""; try { n = Convert.ToInt32(textBox1.Text); } catch (Exception) { textBox2.Text = " Avaible range 3<number<2147000598; "; return; } if (n < 3) { textBox2.Text = " Avaible range 3<number<2147000598; "; return; } factorise(n); int secondDiv = n / d; textBox2.Text += d; while (true) { if (check(secondDiv) == true) { textBox2.Text += " * " + SCD(secondDiv, secondDiv); temp = secondDiv / SCD(secondDiv, secondDiv); if (check(temp) == false) { textBox2.Text += " * " + temp; break; } else { secondDiv = temp; } } else { textBox2.Text += " * " + secondDiv; break; } } } private bool check(int secondDiv) { for (int i = 0; i < massDivLength; i++) { if (secondDiv == massDiv[i]) break; if (secondDiv % massDiv[i] == 0) { return true; } } return false; } private int factorise(int n) { d = 1; j = 1; if (check(n) == false) { textBox2.Text = "Number " + n + " is prime -> "; return 0; } x = RandomNumber(n-1); while (true) { oldx = x; for (int i = 1; i < j; i++) { x = ((x * x) + 1) % n; d = SCD(Math.Abs(x - oldx), n); if (d > 1 && d < n) { return d; } } j *= 2; } } private int SCD(int firstNumber, int secondNumber) { //e.g. 3,18; int scd; int sdfn=1; for (int i = 0; i < massDivLength; i++) { if (firstNumber % massDiv[i] == 0) { sdfn = massDiv[i]; if (secondNumber % sdfn == 0) { scd = sdfn; return scd; } } } return 1; } private int RandomNumber(int n) { Random rNum = new Random(); return rNum.Next(1, n); } private void Form1_Load(object sender, EventArgs e) { for (int i = 2; i < 256; i++) { massDiv.Add(i); } massDivLength = massDiv.Count; } } } 6. Результат роботи /
Антиботан аватар за замовчуванням

22.05.2013 21:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!