Привет, ребята! Сегодня мы погружаемся в увлекательный мир шифрования ключевых сообщений. Так что берите чашечку кофе, садитесь поудобнее и давайте вместе раскроем секреты безопасного общения!
Метод 1: шифр Цезаря
Давайте начнем с классики, не так ли? Шифр Цезаря — это простой метод шифрования, который предполагает сдвиг каждой буквы сообщения на определенное количество позиций вниз по алфавиту. Например, при сдвиге на 3 «HELLO» становится «KHOOR». Легко-просто, правда?
Пример кода:
def caesar_cipher(message, shift):
encrypted_message = ""
for char in message:
if char.isalpha():
encrypted_message += chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
else:
encrypted_message += char
return encrypted_message
message = "HELLO"
shift = 3
encrypted_message = caesar_cipher(message, shift)
print(encrypted_message) # Output: "KHOOR"
Метод 2: шифр Виженера
Шифр Виженера поднимает ситуацию на новый уровень. Он использует ключевое слово для определения суммы смещения для каждой буквы в сообщении. Ключевое слово повторяется до тех пор, пока оно не будет соответствовать длине сообщения. Затем каждая буква сдвигается в соответствии с соответствующей буквой в ключевом слове.
Пример кода:
def vigenere_cipher(message, keyword):
encrypted_message = ""
keyword_repeated = (keyword * (len(message) // len(keyword) + 1))[:len(message)]
for i in range(len(message)):
char = message[i]
if char.isalpha():
shift = ord(keyword_repeated[i].upper()) - ord('A')
encrypted_message += chr((ord(char) - ord('A') + shift) % 26 + ord('A'))
else:
encrypted_message += char
return encrypted_message
message = "HELLO"
keyword = "KEY"
encrypted_message = vigenere_cipher(message, keyword)
print(encrypted_message) # Output: "RIJVS"
Метод 3: шифрование RSA
Теперь давайте окунемся в мир асимметричного шифрования с помощью RSA. RSA использует пару ключей: открытый ключ для шифрования и закрытый ключ для дешифрования. Открытый ключ передается другим, а закрытый ключ хранится в секрете. Сообщения, зашифрованные открытым ключом, можно расшифровать только с помощью закрытого ключа.
Пример кода:
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa, padding
def rsa_encrypt(message, public_key):
encrypted_message = public_key.encrypt(
message.encode('utf-8'),
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
return encrypted_message
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048
)
public_key = private_key.public_key()
message = "HELLO"
encrypted_message = rsa_encrypt(message, public_key)
print(encrypted_message)
Имея в своем арсенале эти методы, вы уже на пути к тому, чтобы стать мастером шифрования ключевых сообщений. Помните, что в современном цифровом мире необходима безопасная связь, поэтому держите эти сообщения под замком!
Надеюсь, эта статья в блоге оказалась для вас полезной и интересной. Следите за обновлениями, скоро вас ждут еще более интересные обсуждения технологий!