`
mingren135
  • 浏览: 72510 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

验证DSA私钥合法性

 
阅读更多

 

要看dsa私钥生成是否合法,可以简单验证一下

import java.security.Key;
import java.security.KeyFactory;
import java.security.spec.EncodedKeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
import org.bouncycastle.util.encoders.Base64;

public class TestDsa {
	public static void main(String[] args) throws Exception {
		String base64Prikey = "MIIBSwIBADCCASwGByqGSM44BAEwggEfAoGBAP1/U4E"+
				"ddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs1"+
				"4E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1" + 
				"VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA"+
				"9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6E"+
				"woFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImo"+
				"g9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoEFgIUV6pvYD6fM1L4KxjlIUIeN+yvq/U=";
		
		byte[] keyBytes = Base64.decode(base64Prikey.getBytes());
	    KeyFactory keyFactory = KeyFactory.getInstance("DSA");

	    EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
	    Key key = keyFactory.generatePrivate(keySpec);

	    System.out.println(key);
	}
}

 

 正确结果输出如下:

Sun DSA Private Key 
parameters:DSA
	p:     fd7f5381 1d751229 52df4a9c 2eece4e7 f611b752 3cef4400 c31e3f80 b6512669
    455d4022 51fb593d 8d58fabf c5f5ba30 f6cb9b55 6cd7813b 801d346f f26660b7
    6b9950a5 a49f9fe8 047b1022 c24fbba9 d7feb7c6 1bf83b57 e7c6a8a6 150f04fb
    83f6d3c5 1ec30235 54135a16 9132f675 f3ae2b61 d72aeff2 2203199d d14801c7
	q:     9760508f 15230bcc b292b982 a2eb840b f0581cf5
	g:     f7e1a085 d69b3dde cbbcab5c 36b857b9 7994afbb fa3aea82 f9574c0b 3d078267
    5159578e bad4594f e6710710 8180b449 167123e8 4c281613 b7cf0932 8cc8a6e1
    3c167a8b 547c8d28 e0a3ae1e 2bb3a675 916ea37f 0bfa2135 62f1fb62 7a01243b
    cca4f1be a8519089 a883dfe1 5ae59f06 928b665e 807b5525 64014c3b fecf492a

x:     57aa6f60 3e9f3352 f82b18e5 21421e37 ecafabf5

 

如果密钥格式不对,则会有错误输出:

Exception in thread "main" java.security.spec.InvalidKeySpecException: Inappropriate key specification: IOException : DerInputStream.getLength(): lengthTag=38, too big.
	at sun.security.provider.DSAKeyFactory.engineGeneratePrivate(Unknown Source)
	at java.security.KeyFactory.generatePrivate(Unknown Source)
	at TestDsa.main(TestDsa.java:28)

 

分享到:
评论

相关推荐

    DSA.zip_dsa

    在license制作中,开发者通常会使用DSA生成私钥,然后用私钥对包含许可信息的文件进行签名,用户端则通过验证公钥来确认license的合法性。 7. **效率与限制**:DSA的签名和验证速度相对较快,但相比RSA等算法,密钥...

    dsa.rar_dsa

    签名者使用自己的私钥对消息哈希进行签名,而接收方则使用签名者的公钥来验证签名的合法性。在MCU和DVD的通信中,可能涉及到密钥的生成、存储、交换以及签名和验证的步骤。 在“dsa.pdf”这个文件中,我们可能会...

    DSA.rar_DSA在线加密_SHA DSA_dsa_dsa.RAR

    在签名过程中,发送方使用自己的私钥对消息创建数字签名,接收方通过验证签名的公钥确认签名的合法性。 描述中提到的"数字摘要为md5或者sha1",这是指在签名之前,先对原始数据应用哈希函数生成固定长度的摘要。MD5...

    DSA2013_AutoUpdate.rar

    DSA是加密学中的一种公钥算法,主要用于数字签名和验证,确保数据的完整性和发送者的身份。 在IT领域,数字签名算法(如DSA)是网络安全的基础,它基于非对称加密技术。DSA由美国国家安全局(NSA)设计,并在1994年...

    DSA.rar_dsa_dsa源码\_site:www.pudn.com

    4. **验证过程**:接收者使用公钥y,验证s是否合法,然后计算w = s^(-1) mod q,u1 = H(m) * w mod q,u2 = r * w mod q,v = (g^u1 * y^u2) mod p,如果v == r,则签名有效。 5. **安全性**:DSA的安全性基于计算...

    DSA.zip_dsa_zip

    这种机制确保了信息传输过程中的不可否认性和数据的完整性,无论是在网络安全协议中,还是在各种需要验证用户身份和信息真实性的场合中,DSA都发挥着举足轻重的作用。 在实践中,程序员和开发者们常常需要借助一些...

    DSA2011注册

    DSA的核心原理是使用一对密钥,即公钥和私钥。私钥由拥有者保密,用于生成数字签名;公钥则可以公开,用于验证签名。其工作流程包括以下几个步骤: 1. **签名生成**:发送方使用私钥对消息的哈希值进行加密,生成...

    论文研究-数字签名认证在DVD版权保护中的应用研究.pdf

    在DVD内容保护中,DSA算法被用来对设备的合法性进行身份认证,确保数据的完整性。例如,播放机在读取DVD盘片前,会对盘片上的数字签名进行验证,确保数据未被非法篡改。DSA算法在这一过程中可以有效防止盗版活动,...

    openssl数字签名、加解密等等

    它结合了发送者的私钥和哈希函数,接收者可以通过公钥来验证签名的合法性。 3. **EVP_Sign**:EVP_Sign是OpenSSL中用于数字签名的一组API,它可以支持不同的签名算法,如RSA、DSA、ECDSA等。这些API提供了一种统一...

    银联在线接口

    银联服务器接收到请求后,会使用商户提供的公钥来解密签名,然后对原始数据进行相同的哈希运算,对比解密后的哈希值与自身计算的哈希值是否一致,以此验证数据的完整性和来源的合法性。如果验证通过,交易将继续进行...

    数字签名算法及其比较.docx

    接收者通过验证数字签名可以确认公文的合法性。 3. 机密通信:在机密通信中,发送方可以使用数字签名算法对通信内容进行签名,以保证内容的机密性和完整性。接收方在接收到内容后,通过验证数字签名可以确认内容的...

    VB.NET关于加密算法

    数字签名利用私钥对数据进行加密,然后可以用对应的公钥验证签名的合法性,确保数据未被篡改且来自可信源。 4. 常见加密算法: - DES和3DES:标准的对称加密算法,DES已被3DES取代,因为后者更安全。 - AES:高级...

    C++多种算法实现的在线签名鉴定.zip

    证书用于验证公钥的合法性,防止中间人攻击。 4. **消息认证码(MAC)**:结合了密钥和散列函数,提供一种方式来验证数据的完整性和来源。MAC可能使用如HMAC(基于哈希的消息认证码)。 5. **签名算法**:如RSA...

    id_digital.rar_java 数字签名_数字签名_数字签名 java

    它使用公钥和签名数据来确认数据的完整性和来源的合法性。同样,`Signature`类在这里用于验证签名,通过更新数据的哈希值,然后与已有的签名进行比较,如果匹配,则说明数据未被篡改且签名有效。 ...

    shiyan.rar_数字签名系统

    3. **数字证书**:在实际应用中,为了验证公钥的合法性,会使用数字证书。证书由权威机构(如CA)签名,包含公钥和相关标识信息,确保接收者获取到的公钥确实是发送者的。 4. **签名过程**:发送者首先计算数据的...

    用Java实现数字签名一例

    公钥则被接收者用来验证签名的合法性。 1. **创建数字签名** 创建数字签名的步骤包括选择一个合适的算法(如SHA256withRSA),生成密钥对,使用私钥对数据进行签名操作。以下是一个简单的Java代码示例: ```java ...

    JS中的黄道曲线密码学标准DSTU4145.zip

    5. **签名与验证**:基于椭圆曲线的签名算法,如ECDSA,使用私钥生成签名,用公钥验证签名的合法性。 在"jkurwa-master"这个文件夹中,可能包含了一个名为"jkurwa"的项目,该项目可能是对DSTU4145标准的一个...

    pdf.rar_java数字水印_pdf_pdf签名_数字签名_签名

    PDF(Portable Document Format)是一种广泛使用的文件格式,用于在各种操作系统和硬件之间交换文档,保持其...通过学习和应用这些知识,开发人员可以构建强大的PDF安全工具,为文档的合法性和保护提供强有力的支持。

    Create-Verify-Digital-Signatures-master.zip

    接收者可以验证证书的合法性,进一步确认公钥的来源。 在"Create-Verify-Digital-Signatures-master"项目中,可能包含的文件有源代码、示例、测试用例等,旨在帮助开发者理解和实现数字签名。这些文件可能涉及不同...

    数字签名软件

    - **交易验证**:在网络交易中,数字签名可验证交易的合法性,防止欺诈。 6. **www.pudn.com.txt和v30CSharpdemoSQL** 这两个文件名可能分别对应一个资源下载网站的链接和一个C#实现的数字签名系统示例数据库文件...

Global site tag (gtag.js) - Google Analytics