带有DSA私钥的dnssec-keygen outputfile

时间:2014-08-21 12:03:11

标签: java private-key dsa network-security dnssec

我现在已经试图破解这几天了,而且我似乎无法让它发挥作用。

基本上我有一个.private文件,它是以下命令的结果:

dnssec-keygen -C -a DSA -b 1024 -n HOST -T KEY Hostmame

该文件采用某种格式(出于安全原因我删除了值)

Private-key-format: v1.2
Algorithm: 3 (DSA)
Prime(p):   $value
Subprime(q): $value
Base(g): $value
Private_value(x): $value
Public_value(y): $value

所以我的问题是,是否有人知道如何阅读此文件并从中获取一个PrivateKey对象来签署邮件以发送到安全的DNS服务器?

我已经尝试了好几件事,但我似乎无法对这些值进行正确的解码...

尝试的事情: github上此链接的readDSAPrivateKey方法:https://github.com/bitsai/courses/blob/master/Network%20Security/A3/Honoroff-Tsai/src/DNSSEC.java

还试过这个:

ObjectInputStream keyIn = new ObjectInputStream(new FileInputStream(args[3]));
PrivateKey privkey = (PrivateKey) keyIn.readObject();
keyIn.close();

任何帮助或指出都将不胜感激......

1 个答案:

答案 0 :(得分:1)

似乎值是以Base64编码编码的。

解码的正确方法是:

byte[] data = base64.fromString(val);
if (line.startsWith("Prime(p): ")){
   p = new BigInteger(1, data);
}

如上所述: https://github.com/dblacka/jdnssec-tools/blob/master/src/com/verisignlabs/dnssec/security/DnsKeyConverter.java