Описание тега digital-signature
None Математическая схема для демонстрации подлинности цифрового сообщения или документа (Википедия). Набор средств криптографии часто используется вместе с парой открытого и закрытого ключей для цифровой подписи сообщения и проверки сообщения.
Цифровые подписи часто используются в криптографически безопасном обмене сообщениями, чтобы обеспечить:
- Аутентификация - подтверждение того, что сообщение было отправлено от доверенной стороны
- Целостность - доказательство того, что сообщение не было подделано при передаче
- Фиксация авторства - получатель может доказать третьей стороне, что сообщение исходит от исходного отправителя.
Коды аутентификации сообщений (MAC) также предлагают аутентификацию и защиту целостности, но не защиту от авторства.
Цифровые подписи обычно используют пару открытого и закрытого ключей. Закрытый ключ используется для подписи сообщения, а открытый ключ используется для проверки целостности и подлинности сообщения.
Если сообщение было подделано или не было подписано ожидаемой стороной, проверка подписи не будет выполнена.
Пример цифровой подписи простого сообщения в java с последующей проверкой результата:
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
KeyPair keyPair = kpg.generateKeyPair();
byte[] message = "My message is strong!".getBytes();
// Sign our message
Signature signer = Signature.getInstance("SHA1withRSA");
signer.initSign(keyPair.getPrivate());
signer.update(message);
byte[] signatureData = signer.sign();
// Verify our message using the public key + signatureData
Signature verifier = Signature.getInstance("SHA1withRSA");
verifier.initVerify(keyPair.getPublic());
verifier.update(message);
assertTrue(verifier.verify(signatureData));
Смотрите также: