如何匹配公钥是否相同

时间:2010-12-28 07:17:26

标签: digital-signature bouncycastle

我正在使用crypto.signText()CAPICOM签署一些文字。

所以,现在我正在使用Base64Encoded签名文本。

然后我使用BouncyCastle来验证签名。直到这没关系。

现在我想做的是,

当用户第一次登录系统时我想验证该签名然后将publicKey存储到数据库中。从下次登录开始,我想将使用新签名的文本与该用户的数据库中的publicKey进行匹配。

如果签名文本中的公钥和存储在db中的公钥相同,则只允许用户登录系统。

如何实现这个? (我正在使用JAVA郎)

1 个答案:

答案 0 :(得分:0)

首先使用私钥创建签名,而不是公钥。之后,可以使用公钥验证签名。这是您可以做的,使用数据库中的公钥并验证“签名文本”的签名。在Java中,您通常不再需要Bouncycastle。运行时已包含您需要的所有内容。

如何验证签名的示例: http://download.oracle.com/javase/tutorial/security/apisign/vstep4.html

为避免重播攻击,“签名文本”应包含系统时间和日期或单调计数器。因此,还应检查文本的内容是否为最新。