当前位置: 首页 > 编程笔记 >

Java使用DSA密钥对生成XML签名的方法

阮才俊
2023-03-14
本文向大家介绍Java使用DSA密钥对生成XML签名的方法,包括了Java使用DSA密钥对生成XML签名的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Java使用DSA密钥对生成XML签名的方法。分享给大家供大家参考。具体实现方法如下:

MainClass.java代码如下:

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.SecureRandom;

import java.util.Collections;

import javax.xml.crypto.dsig.CanonicalizationMethod;

import javax.xml.crypto.dsig.DigestMethod;

import javax.xml.crypto.dsig.Reference;

import javax.xml.crypto.dsig.SignatureMethod;

import javax.xml.crypto.dsig.SignedInfo;

import javax.xml.crypto.dsig.XMLSignature;

import javax.xml.crypto.dsig.XMLSignatureFactory;

import javax.xml.crypto.dsig.keyinfo.KeyInfo;

import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;

import javax.xml.crypto.dsig.keyinfo.KeyValue;

import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;

public class MainClass {

  public static void main(String[] args) throws Exception {

    KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");

    kpg.initialize(1024, new SecureRandom());

    KeyPair dsaKeyPair = kpg.generateKeyPair();

    XMLSignatureFactory sigFactory = XMLSignatureFactory.getInstance();

    Reference ref = sigFactory.newReference("#Body", sigFactory.newDigestMethod(DigestMethod.SHA1, null));

    SignedInfo signedInfo = sigFactory.newSignedInfo(sigFactory.newCanonicalizationMethod(

        CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS, (C14NMethodParameterSpec) null), sigFactory.newSignatureMethod(SignatureMethod.DSA_SHA1, null), Collections.singletonList(ref));

    KeyInfoFactory kif = sigFactory.getKeyInfoFactory();

    KeyValue kv = kif.newKeyValue(dsaKeyPair.getPublic());

    KeyInfo keyInfo = kif.newKeyInfo(Collections.singletonList(kv));

    XMLSignature xmlSig = sigFactory.newXMLSignature(signedInfo, keyInfo);

  }

}

希望本文所述对大家的java程序设计有所帮助。

 类似资料:
  • 根据从Linux命令行创建DSA签名时的说明,我创建了一条DSA签名消息: directions实际上使用了foo.sha1而不是foo.txt,其中foo.sha1是由生成的,但签名哈希似乎有点多余,因为DSA本身应该进行哈希运算。 所以,不管怎样,我做到了。以下是我使用的私钥(我专门为测试目的生成它): 下面是sigfile.bin的十六进制编码输出: 我现在正试图用BouncyCastle在

  • 鉴于: 由RSACryptoServiceProvider生成的签名密钥。 创建带有孩子的签名jwt的需求。 如果签名密钥来自x509证书,那么我会将kid设置为x5t。在这种情况下,情况并非如此。我可以为孩子编造一些武断的东西,但是如果碰撞不太可能发生,并且孩子和证书之间存在有意义的联系,那就最好了。 我的意图是:- 创建一个字节数组,通过将模字节附加到指数字节来创建。 SHA256编码数组。

  • 如果我在某个地方出错,请纠正我,因为我是加密领域的新手。 我使用以下命令在Java 7中生成EC密钥对: 根据:文件。神谕com/javase/7/docs/technotes/tools/windows/keytool。html#命令 keytools-genkey对-alias MyServerPair-keyalg EC-keysize 571-sigalg SHA512 with ECDS

  • 我需要用DSA公钥验证X509证书签名。我的证书文件x509.crt,我的DSA公钥在一个名为dsa_pub.key的文件中 我正试图为此使用openssl。我已经阅读了openssl验证文档,但在其中找不到任何有关DSA的参考。 当我运行以下命令时,我可以在证书中看到我的DSA公钥: 但是,在使用文件DSA_pub.key中的DSA公钥验证cert.crt时,我遇到了麻烦 如果您有任何建议,我将

  • 这可能吗?如何从命令行执行此操作?

  • 并且我将这个函数称为用RSA公钥加密DSA密钥的函数: