Шифрування методом rsa c код. RSA, чи так все просто? Коли з'явилася криптосистема у сучасному вигляді

Під катом описані приклади вибору поганих параметрів шифру RSA.

«Слід наголосити на необхідності дотримання обережності у виборі модуля RSA (числа n) для кожного із кореспондентів мережі. У зв'язку з цим можна сказати таке. Читач може самостійно переконатися, що знаючи одну з трьох величин p, qабо φ(n), можна легко знайти секретний ключ RSA…».

Доповнимо цей текст. При невдалому виборі модуля шифру RSA, як і зроблено з прикладу посібника, наведеному нижче, можна дешифрувати текст і наявність секретного ключа, тобто. не знаючи жодної із трьох названих величин.

Для цього достатньо розташовувати зашифрованим текстом, заданим модулем шифру n, відкритим ключем ешифру і виконати лише три кроки атаки «безключового читання». Після четвертого атакуючого кроку встановлюється, що на попередньому кроці отримано вихідний текст, він може бути прочитаний. Покажемо, наскільки це робиться.

Спочатку наведемо приклад з стор 313-315 з названого посібника.

Приклад

Шифруваннякороткого вихідного текстового повідомлення: RSA.
Одержувач встановлює шифр із характеристиками n=pq=527, де р = 17, q=31і φ(n) = (р -1) (q - 1) = 480. Як відкритий ключ евибрано число, взаємно просте з φ(n), е=7. Для цього числа за допомогою розширеного алгоритму Евкліда знайдено цілі числа uі v, що задовольняють співвідношенню е∙u+φ(n)∙v=1:

480=7∙68+4,
7=4∙1+3,
4=3∙1+1,
1=4–3∙1=4–(7–4∙1)∙1=4∙2–7∙1=(480–7∙68)∙2–7∙1=480∙2–7∙137,
v=2, u=–137
.

Оскільки –137≡343(mod480), то d=343.

Перевірка: 7∙343=2401≡1(mod480).

Текстове повідомлення подається у вигляді послідовності чисел, що містяться в інтервалі . Для цього літери R, Sі Aкодуються п'ятирозрядними двійковими числами. Використовуються порядкові номери цих літер в англійському алфавіті при їхньому двійковому поданні:

R=18 10 =(10010) 2, S=19 10 =(10011) 2,
A=1 10 =(00001) 2.

Тоді RSA=(100101001100001) 2. Розбиття тексту на блоки обмеженої довжини дає уявлення із двох блоків: RSA=(100101001), (100001)=(М 1 =297, М 2 =33).

Послідовно шифруються блоки вихідного тексту М 1 = 297, М 2 = 33:
y 1 =Е k (М 1)=М 1 e ≡297 7 (mod527)=474.

Тут скористалися тим, що:

297 7 =((297 2) 3)297≡(mod527)=(200 3 (mod527)297)(mod527)=474,
y 2 =Е k (М 2) = M 2 e ≡33 7 (mod527) = 407.

Шифрований текст, як і вихідний, отримуємо у вигляді двох блоків: у 1 = 474; у 2 = 407.

Розшифруванняє послідовністю дій D k (y i) = (y i) d = (y i) 343 (mod 527), i=1,2.

Обчислення зведення у ступінь dзручніше проводити, попередньо представляючи показник ступеня сумою ступенів числа 2 , а саме: 343=256+64+16+4+2+1 .

Використовуючи це представлення показника ступеня d=343, отримуємо:

474 2 ≡174(mod527),
474 4 ≡237(mod527),
474 8 ≡307(mod527),
474 16 ≡443(mod527),
474 32 ≡205(mod527),
474 64 ≡392(mod527),
474 128 ≡307(mod527),
474 256 ≡443(mod527),

та остаточно 474 343 (mod527)=(443∙392∙443∙237∙174∙474) (mod527)=297.

Аналогічно обчислюється значення 407 343 (mod527) = 33.

Перехід до буквеного уявлення розшифрованого повідомлення дає: RSA.

Після розгляду приклад у посібнику наводяться міркування стійкості системи RSA. Наголошується на необхідності дотримання обережності у виборі модуля шифру RSA (числа n) для кожного із кореспондентів мережі. Вказується на неприпустимість ігнорування вимог до параметрів системи шифрування, що вибираються. Серед таких вимог, на жаль, не зазначено, порушення якого ілюструє наведений приклад.

Атака на шифр RSA

Розглянемо приклад атаки на шифр RSA. Скористайтеся даними прикладу, наведеного на сторінці 313-315 у навчальному посібнику «Основи криптографії» А.П. Алфьоров, А.Ю. Зубов, А.С. Кузьмін, А.В. Черемушкин, Москва. "Геліос АРВ", 2001.

Невдало (неприпустимість) вибраних параметрів системи у цьому прикладі легко показується обчисленнями, що реалізують атаку безключового читання вихідного тексту. Сутність такої атаки полягає у наступному. Задано відкритий ключ шифру RSA ( е=7, n=527) та шифрований текст. У прикладі шифрований текст представлений двома блоками
у = (у 1 = 474, у 2 = 407).

Кожен шифрований блок атакується індивідуально, спочатку атакуємо у 1 = 474, після його дешифрування, атакуємо інший блок у 2 = 407.

Далі формується шляхом багаторазового зашифрування із збереженням результатів двох послідовних кроків алгоритму атаки та з використанням відкритого ключа послідовність числових значень у i, у 1 =існуючий шифрований текст.

В алгоритмі атаки на шифрований текст визначається такий номер кроку j, для котрого y i e j (mod n) = (y i e j-1 (mod n)) e (mod n) = y i, i>1. З останнього співвідношення бачимо, що при зведенні до ступеня езначення (y i e j-1 (mod n))виходить початковий шифортекст y i = у 1.

Але це означає, що у цьому кроці шифрувався відкритий текст. Безпосередніми обчисленнями (їх виявляється зовсім небагато) з використанням екранного калькулятора знаходимо те значення j, при якому цикл шифрування завершується значенням y 1, З якого цикл і був початий.

Атака на перший блок у 1 = 474шифртексту.
Крок 1:& nbsp 474 7 (mod527) = 382;
Крок 2:& nbsp 382 7 (mod527) = 423;
Крок 3:& nbsp 423 7 (mod527) = 297;
Крок 4:   на цьому кроці шифрується вже знайдений вихідний текст, але його необхідно виконати, оскільки атакуючий вихідного тексту не знає. Ознакою завершення атаки є збіг початкового значення шифртексту ( 474 ) та результату 4-го кроку зашифрування. Саме такий збіг і має місце.

297 7 (mod527) = 474отримали початковий (перший) блок шифртексту. Атаку на перший блок завершено успішно у 1 = 474. Попередній результат кроку 3 дорівнює відкритому тексту М 1 = 297.

n=527 r=297за модулем n=527. Це записується так y i = у 1 = 297. Формуємо статечні відрахування
(((297 7 (mod527)) 7 (mod527)) 7 (mod527)) 7 =297.

Атака на другий блок у 2 = 407шифртексту.
Крок 1:& nbsp 407 7 (mod527) = 16;
Крок 2:& nbsp 16 7 (mod527) = 101;
Крок 3:  101 7 (mod527) = 33;
Крок 4:& nbsp 33 7 (mod527) = 407.

Знову на третьому етапі отримано блок вихідного тексту ( М 2 = 33), але атакуючому це невідомо, і він виконує наступний (четвертий крок), результат якого ( 407 ) збігається з початковим шифртекстом у 2 = 407.

По суті, в кільці відрахувань за модулем n=527реалізувався короткий цикл обробки відрахування r=33за модулем n=527. Це записується так y i = у 2 = 33.
Формуємо статечні відрахування ((33 7 (mod527)) 7 (mod527)) 7 (mod527) = 33.

Результат атаки (вихідний текст М 1 = 297, М 2 = 33) Отриманий триразовим шифруванням заданого шифртексту. Більшого успіху для атакуючого шифртекст важко уявити.

Продовжуючи обговорення питання про вибір модуля та інших параметрів шифру, можна додати, що модуль шифру ( n=527) Деякі вихідні тексти взагалі не дозволяє шифрувати. При цьому вибір значення відкритого ключа е великої ролі не відіграє. Існують значення вихідних текстів, які взагалі неможливо зашифрувати вибраним шифром із модулем n=527.

На жодному із заданих е не вдається зашифрувати вихідні тексти, представлені числами
187 , 341 , 154 і 373 .

Приклад (неможливість шифрування значень деяких вихідних текстів)

Нехай вихідні тексти представлені чотирма блоками y=(y 1 =154, y 2 =187, y 3 =341, y 4 =373). Експонента евідкритого ключа шифру може бути будь-яким взаємно простим числом із функцією Ейлера φ(n)=φ(527)=480. Втім, для даного випадку відкритий ключ еможе бути заданий довільно. Справді, нехай е=2, 4, 7, 9, 17, 111тоді:

154 2 (mod527) = 1;
154 4 (mod527) = 1;
154 7 (mod527) = 154;
154 9 (mod527) = 154;
154 17 (mod527) = 154;
154111 (mod527) = 154;
187 2 (mod527) = 187;
187 4 (mod527) = 187;
187 7 (mod527) = 187;
187 9 (mod527) = 187;
187 17 (mod527) = 187;
187111 (mod527) = 187;
341 2 (mod527) = 341;
341 4 (mod527) = 1;
341 7 (mod527) = 341;
341 9 (mod527) = 341;
341 17 (mod527) = 341;
341 111 (mod527) = 341;
373 2 (mod527) = 1;
373 4 (mod527) = 373;
373 7 (mod527) = 373;
373 9 (mod527) = 373;
373 17 (mod527) = 373;
373 111 (mod527) = 373.

З розглянутого прикладу випливає простий висновок. Дійсно, до вибору параметрів процесу шифрування треба підходити дуже уважно та проводити ретельний попередній аналіз таких параметрів. Як це робити – окреме питання, і в рамках цієї роботи він не розглядається.

Залежно від структури використовуваних ключів методи шифрування поділяються на:

  • симетричне: стороннім особам може бути відомий алгоритм шифрування, але невідома невелика порція секретної інформації - ключа, однакового для відправника та одержувача повідомлення; Приклади: DES, 3DES, AES, Blowfish, Twofish, ГОСТ 28147-89
  • асиметричне шифрування: стороннім особам може бути відомий алгоритм шифрування, і, можливо, відкритий ключ, але невідомий закритий ключ, відомий тільки одержувачу. Криптографічні системи з відкритим ключем в даний час широко застосовуються в різних мережевих протоколах, зокрема, в протоколах TLS і його попереднику SSL (що лежать в основі HTTPS), а також SSH, PGP, S/MIME і т.д. використовує асиметричне шифрування - .

На даний момент асиметричне шифрування на основі відкритого ключа RSA (розшифровується як Rivest, Shamir and Aldeman - творці алгоритму) використовує більшість продуктів на ринку інформаційної безпеки.

Його криптостійкість ґрунтується на складності розкладання на множники великих чисел, а саме - на винятковій труднощі завдання визначити секретний ключ на підставі відкритого, тому що для цього потрібно вирішити завдання існування дільників цілого числа. Найбільш криптостійкі системи використовують 1024-бітові та великі числа.

Розглянемо алгоритм RSA з практичного погляду.

Для початку необхідно згенерувати відкритий та секретні ключі:

  • Візьмемо два великі прості числа p and q.
  • Визначимо n, як наслідок множення p on q (n= p*q).
  • Виберемо випадкове число, яке назвемо d. Це число має бути взаємно простим (не мати жодного спільного дільника, крім 1) з результатом множення (p-1) * (q-1).
  • Визначимо таке число е, якого є істинним наступне співвідношення (e*d) mod ((p-1)*(q-1))=1.
  • Hазовем відкритим ключем числа e та n, а секретним - d та n.

Для того, щоб зашифрувати дані по відкритому ключу (e,n), необхідно:

  • розбити текст, що шифрується, на блоки, кожен з яких може бути представлений у вигляді числа M(i)=0,1,2..., n-1(тобто тільки до n-1).
  • зашифрувати текст, що розглядається як послідовність чисел M(i) за формулою C(i)=(M(I)^e)mod n.

Щоб розшифрувати ці дані, використовуючи секретний ключ (d,n), необхідно виконати такі обчислення: M(i) = (C(i)^d) mod n. В результаті буде отримано безліч чисел M(i), які є вихідним текстом.

Наступний приклад наочно демонструє алгоритм шифрування RSA:

Зашифруємо та розшифруємо повідомлення "САВ" за алгоритмом RSA. Для простоти візьмемо невеликі числа – це скоротить наші розрахунки.

  • Виберемо p=3 і q=11.
  • Визначимо n = 3 * 11 = 33.
  • Hайдем (p-1) * (q-1) = 20. Отже, d дорівнюватиме, наприклад, 3: (d=3).
  • Виберемо число е за такою формулою: (e * 3) mod 20 = 1. Значить е буде рівним, наприклад, 7: (e = 7).
  • Подаємо шифроване повідомлення як послідовність чисел у діапазоні від 0 до 32 (не забувайте, що закінчується на n-1). Літера А = 1, В = 2, С = 3.

Тепер зашифруємо повідомлення, використовуючи відкритий ключ (7,33)

C1 = (3 ^ 7) mod 33 = 2187 mod 33 = 9;
C2 = (1 ^ 7) mod 33 = 1 mod 33 = 1;
C3 = (2 ^ 7) mod 33 = 128 mod 33 = 29;

Тепер розшифруємо дані, використовуючи закритий ключ (3,33).

M1 = (9 ^ 3) mod 33 = 729 mod 33 = 3 (С);
M2 = (1 ^ 3) mod 33 = 1 mod 33 = 1 (А);
M3 = (29 ^ 3) mod 33 = 24389 mod 33 = 2 (В);

Дані розшифровані!

Вступ 3

Основна частина 5

1Історія створення 5

2Опис алгоритму 5

2.1 Створення ключів 6

2.2Шифрування та розшифрування 6

2.3Приклад використання 7

Висновок 9

Список використаних джерел 10

Вступ

Криптографія – спеціальна система зміни звичайного листи, використовувана з метою зробити текст зрозумілим лише обмеженої кількості осіб, знають цю систему .

Криптографія - наука про захист інформації з використанням математичних методів.

Сучасна криптографія включає:

    симетричні криптосистеми;

    асиметричні криптосистеми;

    системи електронного цифрового підпису (ЕЦП);

    хеш-функції;

    керування ключами;

    отримання прихованої інформації;

    квантова криптографія.

Симетричне шифрування - симетричними називаються алгоритми, в яких для шифрування та дешифрування використовується той самий (відомий тільки відправнику та одержувачу) секретний ключ.

Поширені алгоритми симетричного шифрування:

    AES (англ. Advanced Encryption Standard) – американський стандарт шифрування;

    ГОСТ 28147-89 – вітчизняний стандарт шифрування даних;

    DES (англ. Data Encryption Standard) – стандарт шифрування даних у США до AES;

    3DES (Triple-DES, потрійний DES);

    IDEA (англ. International Data Encryption Algorithm);

    SEED – корейський стандарт шифрування даних;

    Camellia – сертифікований для використання в Японії шифр;

    XTEA - найбільш простий у реалізації алгоритм.

Асиметричні криптоалгоритми покликані насамперед усунути основний недолік симетричних криптосистем – складність управління та розповсюдження ключів.

Основою всіх асиметричних кріптоалгоритмів є велика обчислювальна складність відновлення відкритого тексту без знання закритого ключа.

Приклади асиметричних криптоалгрітмів:

    Diffie-Hellmann;

    RSA – Rivest, Shamir, Adelman – заснований на складності завдання розкладання на множники великих чисел за короткий час;

    DSA – Digital Signature algorithm, стандарт США;

    ГОСТ Р 34.10 - 94, 2001, стандарти РФ.

У цьому рефераті докладно розглянемо асиметричний криптоалгоритм шифрування – алгоритм RSA.

Основна частина

Алгоритм RSA (літерна абревіатура від прізвищ Rivest, Shamir та Adleman) – криптографічний алгоритм з відкритим ключем, що ґрунтується на обчислювальній складності завдання факторизації великих цілих чисел. Криптосистема RSA стала першою системою, придатною і для шифрування, і цифрового підпису.

    Історія створення

Опублікована у листопаді 1976 року стаття Вітфілда Діффі та Мартіна Хеллмана «Нові напрямки в криптографії» перевернула уявлення про криптографічні системи, заклавши основи криптографії з відкритим ключем. Розроблений згодом алгоритм Діффі – Хеллмана дозволяв двом сторонам отримати спільний секретний ключ, використовуючи незахищений канал зв'язку. Однак цей алгоритм не вирішував проблему автентифікації. Без додаткових коштів користувачі не могли бути впевнені, з ким вони згенерували загальний секретний ключ.

Вивчивши цю статтю, троє вчених Рональд Рівест (Ronald Linn Rivest), Аді Шамір (Adi Shamir) і Леонард Адлеман (Leonard Adleman) з Массачусетського Технологічного Інституту (MIT) приступили до пошуків математичної функції, яка б дозволяла реалізувати сформульовану Вітфілдом Діффі та Мартіном Хеллманом модель криптографічної системи з відкритим ключем. Після роботи над більш ніж 40 можливими варіантами їм вдалося знайти алгоритм, заснований на відмінності в тому, наскільки легко знаходити великі прості числа і наскільки складно розкладати на множники добуток двох великих простих чисел, який згодом отримав назву RSA. Система була названа за першими буквами прізвищ її творців.

    Опис алгоритму

Першим етапом будь-якого асиметричного алгоритму є створення пари ключів – відкритого та закритого та поширення відкритого ключа "по всьому світу".

      Створення ключів

Для алгоритму RSA етап створення ключів складається з наступних операцій:

Число називається відкритою експонентою

      Шифрування та розшифрування

Припустимо, відправник хоче надіслати одержувачу повідомлення .

Повідомлення є цілі числа в інтервалі від 0 до , тобто. . На малюнку 1 представлено схему алгоритму RSA.

Рисунок 1 – Схема алгоритму RSA

Алгоритм Відправника:

Алгоритм Одержувача:

Рівняння (1) та (2), на яких заснована схема RSA, визначають взаємно зворотні перетворення множини.

      Приклад використання

У таблиці 1 наведено приклад використання алгоритму RSA. Відправник надіслав зашифроване повідомлення "111111" і одержувач, використовуючи свій закритий ключ, розшифрував його.

Таблиця 1 - Поетапне виконання алгоритму RSA

Опис операції

Результат операції

Генерація ключів

Вибрати два простих числа

Обчислити модуль

Обчислити функцію Ейлера

Вибрати відкриту експоненту

Обчислити секретну експоненту

Шифрування

Вибрати текст для зашифрування

Обчислити шифротекст

Розшифрування

Обчислити вихідне повідомлення

Висновок

У цьому рефераті було докладно розглянуто алгоритм асиметричного шифрування RSA. Була описана історія його створення, описані алгоритми створення ключів, шифрування та розшифровки. Також наведено приклад практичного використання алгоритму RSA.

Список використаних джерел

    Семенов Ю.А. Протоколи Internet // М: Проспект, 2011. - 114 с.

    Бєляєв А.В. Методи та засоби захисту інформації // ЧФ СПбДТУ, 2010. - 142с.

    Венбо М. Сучасна криптографія. Теорія та практика // М.: Вільямс, 2005. – 768 с.

    Шнайєр Б. Прикладна криптографія. Протоколи, алгоритми, вихідні тексти // М.: Тріумф, 2002. – 816 с.

    Алгоритм RSA // Інтернет ресурс: http://ua.wikipedia.org/wiki/Rsa

Криптосистема RSA на кожному такті шифрування перетворює двійковий блок відкритого тексту m довжини size(n), що розглядається як ціле число, відповідно до формули: c = m e (mod n).

При цьому n = pq , де p і q – випадкові прості числа великої розрядності, які знищуються після формування модуля та ключів. Відкритий ключ складається з пари чисел e та n . Підключення e вибирається як досить велике число з діапазону 1< e < φ(n), с условием: НОД(e, j(n)) = 1, где j(n) - наименьшее общее кратное чисел p–1 и q–1. Далі, вирішуючи у цілих числах x, y рівняння xe + yφ(n) = 1, належить d = x, тобто. ed = 1(j(n)). При цьому всім m виконується співвідношення m ed = m(n) , тому знання d дозволяє розшифровувати криптограми.

Щоб гарантувати надійний захист інформації, до систем з відкритим ключем пред'являються дві наступні вимоги.

1. Перетворення вихідного тексту має унеможливлювати його відновлення на основі відкритого ключа.

2. Визначення закритого ключа на основі відкритого також має бути обчислювально нереалізованим. При цьому бажана точна нижня оцінка складності (кількості операцій) розкриття шифру.

Алгоритми шифрування з відкритим ключем набули широкого поширення в сучасних інформаційних системах.

Розглянемо побудову криптосистеми RSA простому прикладі.

1. Виберемо p = 3 та q = 11.

2. Визначимо n = 3 ∙ 11 = 33.

3. Знайдемо j(n) = (p - 1) (q - 1) = 20.

5. Виберемо число d, яке задовольняє 7d = 1(mоd 20).

Легко побачити, що d=3(mоd 20).

Представимо повідомлення, що шифрується, як послідовність цілих чисел за допомогою відповідності: А = 1, B = 2, С = 3, ..., Z = 26. Оскільки size(n) = 6 , то наша криптосистема може зашифровувати літери латинського алфавіту, що розглядаються як блоки, Опублікуємо відкритий ключ (e, n) = (7, 33) і запропонуємо іншим учасникам системи секретного зв'язку зашифровувати за його допомогою повідомлення, що надсилаються на нашу адресу. Нехай таким повідомленням буде CAB , яке в обраному нами кодуванні набуває вигляду (3, 1, 2). Відправник повинен зашифрувати кожен блок і відправити зашифроване повідомлення на нашу адресу:

RSA(C) = RSA(3) = 3 7 = 2187 = 9(mod 33);
RSA(A) = RSA(1) = 1 7 = 1(mod 33);
RSA(B) = RSA(1) = 2 7 = 128 = 29(mod 33).

Отримавши зашифроване повідомлення (9, 1, 29), ми зможемо розшифрувати його на основі секретного ключа (d, n) = (3, 33), зводячи кожен блок у ступінь d = 3:

9 3 = 729 = 3 (mod 33);
1 3 = 1(mod 33);
29 3 = 24 389 = 2 (mоd 33).

Для нашого прикладу легко знайти секретний ключ. Насправді це неможливо, т.к. для використання практично рекомендуються нині такі значення size(n) :


· 512-768 біт - для приватних осіб;

· 1024 біт – для комерційної інформації;

· 2048 біт - для таємної інформації.

Приклад реалізації алгоритму RSA представлений у лістингах 18.1 та 18.2 (компілятори – Delphi, FreePascal).

Лістинг 18.1.Приклад реалізації алгоритму RSA мовою Pascal

program Rsa;
($APPTYPE CONSOLE)
($IFDEF FPC)
($MODE DELPHI)
($ENDIF)

uses SysUtils, uBigNumber;

//Генератор випадкових чисел

var t: array of Byte;
var pos: Integer;
var cbox: array of Byte =
(237, 240, 161, 1, 130, 141, 205, 98, 27, 169, 181, 202, 173, 47, 114, 224, 35, 183, 79, 82, 153, 220, 172, 22, 17, 11, 200, 131, 14, 154, 167, 91, 250, 31, 213, 112, 126, 241, 236, 155, 198, 96, 87, 143, 244, 151, 134, 38, 129, 233, 186, 101, 41, 94, 231, 115, 113, 199, 51, 145, 229, 37, 69, 180, 85, 33, 207, 163, 102, 187, 4, 89, 7, 44, 75, 88, 81, 120, 10, 232, 221, 168, 230, 158, 247, 211, 216, 156, 95, 64, 242, 215, 77, 165, 122, 5, 15, 119, 100, 43, 34, 48, 30, 39, 195, 222, 184, 92, 78, 135, 103, 166, 147, 32, 60, 185, 26, 251, 214, 90, 139, 45, 73, 150, 97, 116, 136, 68, 219, 248, 191, 192, 16, 8, 243, 50, 132, 105, 62, 201, 204, 65, 0, 99, 182, 121, 194, 108, 160, 170, 56, 226, 206, 254, 117, 178, 9, 197, 234, 127, 58, 171, 40, 29, 177, 142, 3, 228, 188, 162, 212, 157, 49, 175, 174, 140, 70, 106, 123, 66, 196, 246, 179, 42, 218, 71, 217, 227, 18, 164, 24, 67, 159, 25, 111, 255, 193, 245, 2, 238, 133, 21, 137, 152, 109, 148, 63, 124, 203, 104, 54, 55, 223, 80, 107, 210, 225, 149, 252, 76, 12, 189, 93, 46, 23, 13, 36, 209, 61, 249, 110, 144, 86, 52, 253, 72, 28, 53, 57, 125, 59, 235, 84, 128, 208, 146, 20, 74, 6, 239, 190, 83, 19, 138, 118, 176);

procedure InicMyRandom;
var i: Integer;
var s:string;
begin
WriteLn("Введіть будь-який текст для ініціалізації генератора
випадкових чисел (до 256 символів):");
ReadLn(s);
i:= 1;
while (i<=255) and (i<=Length(s)) do