验证DSA私钥合法性

15 篇文章 0 订阅

 

要看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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值