как сделать проверку с помощью java.security.Signature - PullRequest
2 голосов
/ 10 февраля 2012

У меня уже есть пара ключей, публичная и приватная. Как на самом деле использовать java.security.Signature для проверки строки, которую я подписал одним из ключей?

Редактировать:

У меня есть оба ключа в виде строк. Метод проверки, это на самом деле

verify(byte[] signature)

Javadoc говорит:

verify(byte[] signature) Указывает, может ли данная подпись быть проверено с использованием открытого ключа или сертификата подписавшего.

Как мне заставить эту подпись распознавать, какой открытый / закрытый ключ использовать для этой проверки, прежде чем я вызову метод проверки? Другими словами, как мне превратить мои строковые ключи в ключевые объекты, которые будут приняты подписью?

1 Ответ

6 голосов
/ 10 февраля 2012
  1. Используйте KeyFactory для перевода основных спецификаций на объекты.
  2. Позвоните Signature.getInstance(algName), чтобы получить экземпляр подписи.
  3. Используйте Signature метод initVerify, чтобы связать ключ для проверки подписи.
  4. Используйте update для подачи Signature байтов.
  5. Наконец, позвоните verify.
  6. Прибыль

Из KeyFactory Javadoc:

Ниже приведен пример использования фабрики ключей для создания открытого ключа DSA из его кодировки. Предположим, Алиса получила цифровую подпись от Боба. Боб также отправил ей свой открытый ключ (в зашифрованном виде), чтобы проверить свою подпись. Затем Алиса выполняет следующие действия:

X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey);
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec);
Signature sig = Signature.getInstance("DSA");
sig.initVerify(bobPubKey);
sig.update(data);
sig.verify(signature);
...