【问题标题】:dnssec-keygen outputfile with DSA private key带有 DSA 私钥的 dnssec-keygen 输出文件
【发布时间】:2014-08-21 12:03:10
【问题描述】:

我已经尝试破解这个好几天了,但我似乎没有让它工作。

基本上我得到了一个 .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();

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

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-25
      • 2013-05-07
      • 2010-12-27
      相关资源
      最近更新 更多