当你执行
ssh-keygen -t ssh-dss
它生成两个文件:一个包含公钥,另一个包含私钥。
ssh-keygen man-page说它总是生成一个 1024 位 key ,但是当我打开公钥文件时,我总是得到一个 580 个字符的行(这将是
4640 位 ASCII)。
我错过了什么或想错了吗?我已经尝试阅读该算法,但考虑到所涉及的素数的大小,它很难计算。
有没有一种方法可以根据 id_dsa.pub 文件中的字符数量来验证它是否是 1024 位 key ?
请您参考如下方法:
ssh-keygen 存储公钥和私钥的文件有一些预定义的格式(PEM,...),它们不是 key 本身的转储(请记住,例如,私钥通常会被加密)。
在此链接 (https://martin.kleppmann.com/2013/05/24/improving-security-of-ssh-private-keys.html) 中,您将找到一些关于不同格式的很好的解释,以及使用“openssl asn1parse”等工具来显示它们:
私钥是 ASN.1 数据结构,使用 DER 序列化为字节字符串,然后进行 Base64 编码。 ASN.1 与 JSON 大致相当(它支持各种数据类型,例如可以嵌套在树结构中的整数、 bool 值、字符串和列表/序列)。它被广泛用于加密目的,但不知何故随着网络一代的流行而过时(我不知道为什么,它似乎是一种相当不错的格式)。
一种查找公钥大小的方法是在 ASN1 中查找存储它的标签并验证其数据的长度。




