Java使用DSA密钥对生成XML签名的方法
本文实例讲述了Java使用DSA密钥对生成XML签名的方法。分享给大家供大家参考。具体实现方法如下:
MainClass.java代码如下:
importjava.security.KeyPair;
importjava.security.KeyPairGenerator;
importjava.security.SecureRandom;
importjava.util.Collections;
importjavax.xml.crypto.dsig.CanonicalizationMethod;
importjavax.xml.crypto.dsig.DigestMethod;
importjavax.xml.crypto.dsig.Reference;
importjavax.xml.crypto.dsig.SignatureMethod;
importjavax.xml.crypto.dsig.SignedInfo;
importjavax.xml.crypto.dsig.XMLSignature;
importjavax.xml.crypto.dsig.XMLSignatureFactory;
importjavax.xml.crypto.dsig.keyinfo.KeyInfo;
importjavax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
importjavax.xml.crypto.dsig.keyinfo.KeyValue;
importjavax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
publicclassMainClass{
publicstaticvoidmain(String[]args)throwsException{
KeyPairGeneratorkpg=KeyPairGenerator.getInstance("DSA");
kpg.initialize(1024,newSecureRandom());
KeyPairdsaKeyPair=kpg.generateKeyPair();
XMLSignatureFactorysigFactory=XMLSignatureFactory.getInstance();
Referenceref=sigFactory.newReference("#Body",sigFactory.newDigestMethod(DigestMethod.SHA1,null));
SignedInfosignedInfo=sigFactory.newSignedInfo(sigFactory.newCanonicalizationMethod(
CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,(C14NMethodParameterSpec)null),sigFactory.newSignatureMethod(SignatureMethod.DSA_SHA1,null),Collections.singletonList(ref));
KeyInfoFactorykif=sigFactory.getKeyInfoFactory();
KeyValuekv=kif.newKeyValue(dsaKeyPair.getPublic());
KeyInfokeyInfo=kif.newKeyInfo(Collections.singletonList(kv));
XMLSignaturexmlSig=sigFactory.newXMLSignature(signedInfo,keyInfo);
}
}
希望本文所述对大家的java程序设计有所帮助。