Грибник

понеділок, 28 квітня 2025 р.

  Перший грибочок Зморшок. Виріс прямо в дворі біля бардюра.
on квітня 28, 2025
Надіслати електронною поштоюОпублікувати в блозіПоділитися в XОпублікувати у FacebookПоділитися в Pinterest

Немає коментарів:

Дописати коментар

Старіша публікація Головна сторінка
Підписатися на: Дописати коментарі (Atom)

Шукати в цьому блозі

  • Головна
  • Їстивні гриби
    • Зморшок
    • Польський гриб
    • Подменю2
    • Подменю3
  • Меню2
    • Подменю
    • Подменю
  • Подменю

їстивні гриби України

  • Головна сторінка
  • Отруйні гриби України
  • їстивні гриби України

Архів блогу

  • квітня 2025 (1)
  • лютого 2018 (1)
  • січня 2018 (2)
  • жовтня 2017 (2)

Повідомити про порушення

!!!!!

Шифр Плейфера (український алфавіт)







Результат:


код

# Python 3 # Український алфавіт (33 літери) uk_alphabet = "АБВГҐДЕЄЖЗИІЇЙКЛМНОПРСТУФХЦЧШЩЬЮЯ" def create_playfair_matrix(key): # Видаляємо повтори та замінюємо на верхній регістр key = "".join([c.upper() for c in key if c.upper() in uk_alphabet]) seen = set() key_unique = "" for c in key: if c not in seen: key_unique += c seen.add(c) # Додаємо решту алфавіту for c in uk_alphabet: if c not in seen: key_unique += c seen.add(c) # Створюємо матрицю 6x6 (нам знадобиться 36 осередків, але український алфавіт має 33 літери, додамо три символи-заповнювачі) fillers = "012" # Заповнювачі для матриці key_unique += fillers matrix = [list(key_unique[i:i+6]) for i in range(0, 36, 6)] return matrix def find_position(matrix, char): for i, row in enumerate(matrix): if char in row: return i, row.index(char) def prepare_text(text): text = "".join([c.upper() for c in text if c.upper() in uk_alphabet]) prepared = "" i = 0 while i < len(text): a = text[i] b = '' if i + 1 < len(text): b = text[i + 1] if a == b or b == '': b = 'Х' # заповнювач для повторів i += 1 else: i += 2 prepared += a + b return prepared def playfair_encrypt(plaintext, key): matrix = create_playfair_matrix(key) prepared_text = prepare_text(plaintext) ciphertext = "" for i in range(0, len(prepared_text), 2): a, b = prepared_text[i], prepared_text[i+1] row_a, col_a = find_position(matrix, a) row_b, col_b = find_position(matrix, b) if row_a == row_b: ciphertext += matrix[row_a][(col_a+1)%6] + matrix[row_b][(col_b+1)%6] elif col_a == col_b: ciphertext += matrix[(row_a+1)%6][col_a] + matrix[(row_b+1)%6][col_b] else: ciphertext += matrix[row_a][col_b] + matrix[row_b][col_a] return ciphertext def playfair_decrypt(ciphertext, key): matrix = create_playfair_matrix(key) plaintext = "" for i in range(0, len(ciphertext), 2): a, b = ciphertext[i], ciphertext[i+1] row_a, col_a = find_position(matrix, a) row_b, col_b = find_position(matrix, b) if row_a == row_b: plaintext += matrix[row_a][(col_a-1)%6] + matrix[row_b][(col_b-1)%6] elif col_a == col_b: plaintext += matrix[(row_a-1)%6][col_a] + matrix[(row_b-1)%6][col_b] else: plaintext += matrix[row_a][col_b] + matrix[row_b][col_a] return plaintext # Приклад використання if __name__ == "__main__": key = "СЕКРЕТ" text = "ПРИВІТ СВІТ" encrypted = playfair_encrypt(text, key) decrypted = playfair_decrypt(encrypted, key) print(f"Оригінал: {text}") print(f"Зашифровано: {encrypted}") print(f"Розшифровано: {decrypted}")

Про мене

Моє фото
Ящук Віктор
Дивитися мій повний профіль

Мої блоги

  • Блог вчителя фізики Клеванського ліцею №1
  • Рибалка
Погода у Клевані
Погода
Погода у Клевані на 2 тижні

Популярні публікації

  • (без назви)
       Перший грибочок Зморшок. Виріс прямо в дворі біля бардюра.
  • всім привіт!
    Всім привіт!
  • (без назви)
    польський гриб іапврікрнікн
Тема "Захоплення". Зображення для теми від користувача Nikada. На платформі Blogger.