Ответ
Электронная подпись (ЭП) — это цифровой аналог ручной подписи, обеспечивающий целостность и подлинность данных. Работает на основе криптографии с открытым ключом:
- Генерация ключей: создаются приватный (для подписи) и публичный (для проверки) ключи.
- Создание подписи: документ хешируется, затем хеш шифруется приватным ключом — это и есть подпись.
- Проверка подписи: получатель расшифровывает подпись публичным ключом, сравнивает с хешем документа.
Пример на Python (библиотека cryptography):
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding, rsa
# Генерация ключей
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
public_key = private_key.public_key()
# Подпись
message = b"Important document"
signature = private_key.sign(message, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), padding.PSS.MAX_LENGTH))
# Проверка
try:
public_key.verify(signature, message, padding.PSS(mgf=padding.MGF1(hashes.SHA256()), padding.PSS.MAX_LENGTH))
print("Valid signature")
except:
print("Invalid signature")