Back to questions
Junior — Middle
63
Могли бы вы объяснить, что подразумевается под цифровой подписью в криптографии?
Answer from AI
sobes.tech AI
Цифровая подпись — это криптографический механизм, который позволяет подтвердить подлинность и целостность электронного сообщения или документа. Она создаётся с помощью закрытого ключа отправителя и может быть проверена с помощью соответствующего открытого ключа.
Принцип работы:
- Отправитель создаёт хэш сообщения (короткое уникальное представление данных).
- Хэш шифруется закрытым ключом — получается цифровая подпись.
- Получатель расшифровывает подпись открытым ключом отправителя и сравнивает с хэшем полученного сообщения.
Если совпадает, значит сообщение не изменялось и действительно от отправителя.
Пример на Python с использованием библиотеки cryptography:
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization
# Генерация ключей
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
public_key = private_key.public_key()
message = b"Пример сообщения"
# Подпись сообщения
signature = private_key.sign(
message,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
# Проверка подписи
try:
public_key.verify(
signature,
message,
padding.PSS(
mgf=padding.MGF1(hashes.SHA256()),
salt_length=padding.PSS.MAX_LENGTH
),
hashes.SHA256()
)
print("Подпись верна")
except Exception:
print("Подпись не верна")