Ответ
Цифровая подпись обеспечивает целостность и аутентификацию данных. Она доказывает, что сообщение не было изменено и отправлено владельцем закрытого ключа. Данные остаются открытыми.
Пример создания подписи на Python (RSA):
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA256
from Crypto.PublicKey import RSA
# Генерация ключей
private_key = RSA.generate(2048)
public_key = private_key.publickey()
# Создание подписи
data = b"Critical transaction"
hash_obj = SHA256.new(data)
signature = pkcs1_15.new(private_key).sign(hash_obj)
# signature можно передавать вместе с открытыми data
Шифрование обеспечивает конфиденциальность, преобразуя данные в нечитаемый формат. Расшифровать может только сторона, обладающая соответствующим ключом.
Пример симметричного шифрования на Python (AES):
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
# Шифрование
key = get_random_bytes(16) # Секретный ключ
cipher = AES.new(key, AES.MODE_GCM)
ciphertext, tag = cipher.encrypt_and_digest(b"Secret message")
# Для расшифровки нужен тот же key и nonce (cipher.nonce)
| Сравнение: | Аспект | Подпись | Шифрование |
|---|---|---|---|
| Основная цель | Проверка подлинности и целостности | Сокрытие содержимого (конфиденциальность) | |
| Видимость данных | Открытые | Скрытые (зашифрованные) | |
| Типичное использование | Проверка ПО, юридические документы | Защита паролей, личной переписки |