1

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

所以,现在我拥有的是 Base64Encoded 签名文本。

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

现在我想做的是,

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

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

如何实施?(我正在使用 JAVA 语言)

4

1 回答 1

0

第一个签名是使用私钥而不是公钥创建的。之后可以使用公钥验证签名。这就是您可以做的,使用数据库中的公钥并验证“签名文本”的签名。在 Java 中,您通常不再需要 Bouncycastle。运行时已经包含您需要的一切。

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

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

于 2011-01-05T12:47:24.477 回答