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程序设计有所帮助。