Дипломы, курсовые, рефераты, контрольные...
Срочная помощь в учёбе

Практичная реалізація шифру енігма

РефератПомощь в написанииУзнать стоимостьмоей работы

K = ASC (MID $ (ss, i, 1)): IF k> 32 THEN k = k-128. FOR j = 0 TO 31: SWAP s (k, j), s (k, j + 1): NEXT. FOR j = 0 TO 31: SWAP s (k, j), s (k, j + 1): NEXT. S (k, j) = CHR $ ((ASC (set (k, j)) + 32) MOD 33). FOR j = 0 TO 32: SWAP s (i, j), s (i, 32 * RND): S (k, j) = CHR $ ((ASC (s (k, j)) + 32) MOD 33). K = ASC (s (i, n)): s (i, n) = CHR $ (m OR 64). FOR j = 0 TO 32: set (i, j) = CHR $ (j): NEXT. Читать ещё >

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

Підрахуємо число ключів такого шифру, реалізованого програмно. Нехай довжина періоду програмного генератора випадкових чисел дорівнює 2 ** 24. Вісім барабанів, що генеруються за допомогою цього генератора, дадуть разом 2 ** 192 варіантів ключа, а якщо врахувати ще варіанти псевдослучайной послідовності, що управляє рухом барабанів, то вийде чимала цифра в 2 ** 216 варіантів ключа. Таким чином, досить просто отримати стійкий шифр навіть при використанні програмного генератора випадкових чисел з періодом малої для криптографії довжини. Тому наведемо програму, що реалізовує описаний підхід.

Імітація Енігми.

DEFINT I-N: DEFSTR S.

CLS: RANDOM12E 231.

DIM s (4, 32) AS STRING * 1.

ns = 4.

ss = «ААААААААААААААААААААААААААААА '.

PRINT ss Шифрування.

x = RND (-231).

FOR i = 0 TO ns.

FOR j = 0 TO 32: set (i, j) = CHR $ (j): NEXT.

FOR j = 0 TO 32: SWAP s (i, j), s (i, 32 * RND):

NEXT.

NEXT.

s = «» .

FOR i = 1 TO LEN (ss) 'шифрування символу.

k = ASC (MID $ (ss, i, 1)): IF k> 32 THEN k = k-128.

FOR j = 0 TO ns: k = ASC (set (j, k)): NEXT.

IF k <32 THEN k = k + 128.

PRINT CHR $ (k);: S = s + CHR $ (k).

k = ns * RND 'поворот коліс.

FOR j = 0 TO 31: SWAP s (k, j), s (k, j + 1): NEXT.

FOR j = 0 TO 32.

s (k, j) = CHR $ ((ASC (set (k, j)) + 32) MOD 33).

NEXT.

NEXT.

PRINT.

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

x = RND (-231).

FOR i = 0 TO ns.

FOR j = 0 TO 32: s (i, j) = CHR $ (j): NEXT.

FOR j = 0 TO 32: SWAP s (i, j), s (i, 32 * RND): NEXT.

FOR j = 0 TO 32.

IF ASC (set (i, j)) <64 THEN.

m = j: n = ASC (s (i, j)).

DO.

k = ASC (s (i, n)): s (i, n) = CHR $ (m OR 64).

m = n: n = k.

LOOP UNTIL m = j.

END IF.

NEXT j.

FOR j = 0 TO 32.

s (i, j) = CHR $ (ASC (s (i, j)) AND 63).

NEXT.

NEXT i.

ss = s.

FOR i = 1 TO LEN (ss).

k = ASC (MID $ (ss, i, 1)): IF k> 32 THEN k = k-128.

FOR j = ns TO 0 STEP -1.

k = ASC (s (j, k)).

NEXT.

IF k <32 THEN k = k + 128.

PRINT CHR $ (k);

k = ns * RND 'поворот коліс.

FOR j = 0 TO 31: SWAP s (k, j), s (k, j + 1): NEXT.

FOR j = 0 TO 32.

s (k, j) = CHR $ ((ASC (s (k, j)) + 32) MOD 33).

NEXT.

NEXT i.

END.

Після роботи програми на екрані з’являться три рядки, що зображують: верхня — вихідний текст з букв А, середня — шифровку і нижня — розшифрований текст:

ААААААААААААААААААААААААААААА ВА ЖЖЬІХйЙЩСЛЦВФЕШЬРСОТСЗТИОБ ААААААААААААААААААААААААААААА.

Показать весь текст
Заполнить форму текущей работой