在此示例中,我们将学习如何验证先前签名数据的数字签名。要对数据签名,您可以在这篇文章中看到前面的示例。如何创建数字签名和数据签名?
这里的代码片段:
package org.nhooo.example.security; import java.nio.file.Files; import java.nio.file.Paths; import java.security.KeyFactory; import java.security.PublicKey; import java.security.Signature; import java.security.spec.X509EncodedKeySpec; public class VerifyDigitalSignature { public static void main(String[] args) { try { byte[] publicKeyEncoded = Files.readAllBytes(Paths.get("publickey")); byte[] digitalSignature = Files.readAllBytes(Paths.get("signature")); X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(publicKeyEncoded); KeyFactory keyFactory = KeyFactory.getInstance("DSA", "SUN"); PublicKey publicKey = keyFactory.generatePublic(publicKeySpec); Signature signature = Signature.getInstance("SHA1withDSA", "SUN"); signature.initVerify(publicKey); byte[] bytes = Files.readAllBytes(Paths.get("README")); signature.update(bytes); boolean verified = signature.verify(digitalSignature); if (verified) { System.out.println("Data verified."); } else { System.out.println("Cannot verify data."); } } catch (Exception e) { e.printStackTrace(); } } }