# 验证数字签名

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

如果您有生成数字签名的数据，则可以验证签名的真实性。要做到这一点，你需要

*   数据
*   签名
*   与用于签署数据的私钥对应的公钥

在此示例中，您编写`VerSig`程序以验证 [`GenSig`](gensig.html) 程序生成的签名。这演示了验证所谓签名的真实性所需的步骤。

`VerSig`导入公钥和签名，该签名被声称是指定数据文件的签名，然后验证签名的真实性。公钥，签名和数据文件名在命令行中指定。

创建`VerSig`示例程序以导入文件和验证签名的步骤如下。

1.  [准备初始程序结构](vstep1.html)

    创建名为`VerSig.java`的文本文件。键入初始程序结构（import 语句，类名，`main`方法等）。

2.  [输入和转换编码的公钥字节](vstep2.html)

    从指定为第一个命令行参数的文件中导入编码的公钥字节，并将它们转换为`PublicKey`。

3.  [输入签名字节](vstep3.html)

    从指定为第二个命令行参数的文件中输入签名字节。

4.  [验证签名](vstep4.html)

    获取`Signature`对象并使用公钥对其进行初始化以验证签名。向其提供要验证其签名的数据（从指定为第三个命令行参数的文件），并验证签名。

5.  [编译并运行程序](vstep5.html)