Шифры очаровывали людей на протяжении веков, предлагая мир тайн и интриг. С древних времен до наших дней шифры использовались для шифрования сообщений и защиты конфиденциальной информации. В этой статье блога мы углубимся в мир шифров и расшифруем некоторые из самых популярных из них. Так что хватайте детективную шляпу и начнем!
- Шифрование Цезаря:
Давайте начнем с классического шифра Цезаря. Названный в честь Юлия Цезаря, этот шифр предполагает сдвиг каждой буквы алфавита на фиксированное количество позиций. Например, при сдвиге на 3 «А» становится «D», «Б» становится «Е» и так далее. Вот простой пример кода Python для шифрования и дешифрования с использованием шифра Цезаря:
def caesar_cipher(text, shift):
result = ""
for char in text:
if char.isalpha():
ascii_offset = ord('A') if char.isupper() else ord('a')
shifted_char = chr((ord(char) - ascii_offset + shift) % 26 + ascii_offset)
result += shifted_char
else:
result += char
return result
# Encrypt using Caesar cipher
plaintext = "HELLO WORLD"
encrypted_text = caesar_cipher(plaintext, 3)
print("Encrypted text:", encrypted_text)
# Decrypt using Caesar cipher
decrypted_text = caesar_cipher(encrypted_text, -3)
print("Decrypted text:", decrypted_text)
- Шифрование Виженера:
Далее у нас есть шифр Виженера, шифр полиалфавитной замены. Он использует ключевое слово для определения схемы смещения для каждой буквы. Вот пример на Python:
def vigenere_cipher(text, keyword):
result = ""
keyword = keyword.upper()
keyword_len = len(keyword)
for i, char in enumerate(text):
if char.isalpha():
ascii_offset = ord('A') if char.isupper() else ord('a')
keyword_shift = ord(keyword[i % keyword_len]) - ord('A')
shifted_char = chr((ord(char) - ascii_offset + keyword_shift) % 26 + ascii_offset)
result += shifted_char
else:
result += char
return result
# Encrypt using Vigenère cipher
plaintext = "HELLO WORLD"
keyword = "KEY"
encrypted_text = vigenere_cipher(plaintext, keyword)
print("Encrypted text:", encrypted_text)
# Decrypt using Vigenère cipher
decrypted_text = vigenere_cipher(encrypted_text, keyword)
print("Decrypted text:", decrypted_text)
- Шифрование железнодорожного ограждения:
Еще один интригующий шифр — шифр Rail Fence, который предполагает написание сообщения зигзагообразным узором, а затем чтение букв в определенном порядке. Вот пример на Python:
def rail_fence_cipher(text, rails):
fence = [['\n' for _ in range(len(text))] for _ in range(rails)]
rail = 0
direction = 1
for char in text:
fence[rail][text.index(char)] = char
rail += direction
if rail == 0 or rail == rails - 1:
direction = -direction
result = ''.join([char for sublist in fence for char in sublist if char != '\n'])
return result
# Encrypt using Rail Fence cipher
plaintext = "HELLO WORLD"
num_rails = 3
encrypted_text = rail_fence_cipher(plaintext, num_rails)
print("Encrypted text:", encrypted_text)
# Decrypt using Rail Fence cipher
decrypted_text = rail_fence_cipher(encrypted_text, num_rails)
print("Decrypted text:", decrypted_text)
Шифры открывают захватывающий взгляд на мир криптографии и секретной связи. В этой статье мы рассмотрели лишь несколько наиболее популярных шифров, включая шифр Цезаря, шифр Виженера и шифр Rail Fence. Поняв эти методы, вы будете хорошо подготовлены к раскрытию секретов, скрытых в зашифрованных сообщениях. Так что вперед и проверьте свои навыки взломщика кодов!