DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

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

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

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

Про що ця робота

Звіт присвячено вивченню алгоритмів факторизації складних чисел на прикладі комбінованого методу Р-Полларда та пробних ділень. Робота містить блок-схему алгоритму та програмну реалізацію на мові C#.

У роботі розглядаються

  • Факторизація складених чисел
  • Алгоритм Р-Полларда
  • Метод пробних ділень
  • Криптографія
  • Програмна реалізація на C#
  • Блок-схеми алгоритмів

Зміст і розділи

  1. Мета роботи
  2. Повний текст завдання
  3. Блок-схема алгоритму
  4. Список ідентифікаторів
  5. Текст програми
  6. Результати виконання програми
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, що вивчають криптологію та алгоритми захисту інформації.
Викладачі:Костів Ю.М.

Ключові поняття

факторизаціяскладне числометод Р-Поллардапробні діленнякриптологіяC#блок-схемаалгоритмпрограма

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА кафедра захисту інформації З В І Т до лабораторної роботи №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. Результат роботи /
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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