# 将签名和公钥保存在文件中

> 原文： [https://docs.oracle.com/javase/tutorial/security/apisign/step4.html](https://docs.oracle.com/javase/tutorial/security/apisign/step4.html)

现在您已经为某些数据生成了签名，您需要将签名字节保存在一个文件中，将公钥字节保存在另一个文件中，这样您就可以发送（通过调制解调器，软盘，邮件等）其他人

*   生成签名的数据，
*   签名，和
*   公钥

通过运行您将在即将到来的[验证数字签名](versig.html)步骤中生成的`VerSig`程序，接收器可以验证数据是否来自您并且未在传输过程中进行修改。该程序使用公钥来验证收到的签名是否是收到的数据的真实签名。

回想一下，签名放在一个名为`realSig`的字节数组中。您可以通过以下方法将签名字节保存在名为`sig`的文件中。

```
/* save the signature in a file */
FileOutputStream sigfos = new FileOutputStream("sig");
sigfos.write(realSig);
sigfos.close();

```

回想一下[生成公钥和私钥](step2.html)步骤，公钥被放置在名为`pub`的 PublicKey 对象中。您可以通过调用`getEncoded`方法获取编码的密钥字节，然后将编码的字节存储在文件中。您可以根据需要为文件命名。例如，如果您的名字是 Susan，您可能会将其命名为`suepk`（“Sue 的公钥”），如下所示：

```
/* save the public key in a file */
byte[] key = pub.getEncoded();
FileOutputStream keyfos = new FileOutputStream("suepk");
keyfos.write(key);
keyfos.close();

```