该initSign()
方法初始化此对象以进行签名。如果使用不同的参数再次调用此方法,则该调用的效果无效。
现在让我们看一个例子-
import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.Signature; import java.util.Scanner; public class Main { public static void main(String args[]) throws Exception { //创建KeyPair生成器对象 KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA"); //初始化键对生成器 keyPairGen.initialize(2048); //生成键对 KeyPair pair = keyPairGen.generateKeyPair(); //从键对获取私钥 PrivateKey privKey = pair.getPrivate(); //创建签名对象 Signature sign = Signature.getInstance("SHA256withDSA"); //初始化签名 sign.initSign(privKey); byte[] bytes = "Hello how are you".getBytes(); //将数据添加到签名 sign.update(bytes); //计算签名 byte[] signature = sign.sign(); //初始化签名 sign.initVerify(pair.getPublic()); sign.update(bytes); //验证签名 boolean bool = sign.verify(signature); if(bool) { System.out.println("Signature verified"); } else { System.out.println("Signature failed"); } } }
输出结果
Signature verified