Java如何验证签名数据的数字签名呢?
下文笔者讲述java代码验证数据数字签名的方法及示例分享
使用java.security.Signature; 中的 signature.verify 方法即可验证数据数字签名是否争取例:数字签名
package com.java265.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(); } } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。