Как сопоставить открытый ключ одинаково или нет - PullRequest
1 голос
/ 28 декабря 2010

Я использую crypto.signText() и CAPICOM для подписи некоторого текста.

так что теперь у меня есть подписанный текст Base64Encoded.

затем я использую BouncyCastle для проверки подписи,до этого все в порядке.

Теперь, что я хочу сделать, это

когда пользователь входит в систему в первый раз, я хочу проверить эту подпись и затем сохранить publicKey в базе данных.И при следующем входе в систему я хочу сопоставить publicKey, введенный в базу данных для этого пользователя, с недавно полученным подписанным текстом.

, если открытый ключ в подписанном тексте и тот, который хранится в базе данных, совпадают, то только пользовательразрешить вход в систему.

как это реализовать?(Я использую JAVA lang)

1 Ответ

0 голосов
/ 05 января 2011

Первые подписи создаются с использованием закрытого ключа, а не открытого ключа.После этого подпись может быть проверена с использованием открытого ключа.Это то, что вы могли бы сделать, использовать открытый ключ из базы данных и проверить подпись «подписанного текста».В Java вам обычно больше не нужен Bouncycastle.Среда выполнения уже содержит все необходимое.

Пример проверки подписи: http://download.oracle.com/javase/tutorial/security/apisign/vstep4.html

Чтобы избежать атак воспроизведения, «подписанный текст» должен содержать системное время и дату или монотонный счетчик.Поэтому текст также должен быть проверен на предмет актуальности.

...