Java 教程是针对 JDK 8 编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
有关 Java SE 9 和后续版本中更新的语言特性的摘要,请参阅Java 语言更改。
有关所有 JDK 发行版的新功能、增强功能以及已移除或已弃用选项的信息,请参阅JDK 发行说明。
现在您已经为某些数据生成了签名,需要将签名字节保存在一个文件中,将公钥字节保存在另一个文件中,以便您可以通过调制解调器、软盘、邮件等方式将其发送给其他人。
接收者可以通过运行即将在验证数字签名步骤中生成的VerSig
程序来验证数据是否来自您,并且在传输过程中是否被修改。该程序使用公钥来验证接收到的签名是否是接收到的数据的真实签名。
请回忆一下,签名被放置在名为realSig
的字节数组中。您可以通过以下方式将签名字节保存在名为sig
的文件中。
/* 将签名保存到文件中 */ FileOutputStream sigfos = new FileOutputStream("sig"); sigfos.write(realSig); sigfos.close();
请回忆一下,在生成公钥和私钥步骤中,公钥被放置在名为pub
的 PublicKey 对象中。您可以通过调用getEncoded
方法获取编码后的键字节,然后将编码后的字节存储在一个文件中。您可以随意命名文件。例如,如果您的名字是 Susan,您可以将其命名为suepk
(表示“Sue 的公钥”),如下所示:
/* 将公钥保存到文件中 */ byte[] key = pub.getEncoded(); FileOutputStream keyfos = new FileOutputStream("suepk"); keyfos.write(key); keyfos.close();