Освоение шифрования ключевых сообщений: раскрытие секретов безопасной связи

Привет, ребята! Сегодня мы погружаемся в увлекательный мир шифрования ключевых сообщений. Так что берите чашечку кофе, садитесь поудобнее и давайте вместе раскроем секреты безопасного общения!

Метод 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)

Имея в своем арсенале эти методы, вы уже на пути к тому, чтобы стать мастером шифрования ключевых сообщений. Помните, что в современном цифровом мире необходима безопасная связь, поэтому держите эти сообщения под замком!

Надеюсь, эта статья в блоге оказалась для вас полезной и интересной. Следите за обновлениями, скоро вас ждут еще более интересные обсуждения технологий!