Ssh-Keygen

使用 AES 加密和 BASE64 編碼的 SSH 私鑰如何具有小於指定的大小?

  • February 6, 2018

這對某些人來說可能很明顯,但我想知道,如果我生成了 8192 大小的密鑰:

ssh-keygen -t rsa -b 8192

使用 AES 加密和 BASE64 編碼的 SSH 私鑰的大小如何小於指定的 8192?

它的大小為 6446。

是否涉及一些壓縮?

8192 rsa 密鑰是8192 位,而不是字節。那是1024字節。

BASE64 中的編碼字節將其大小增加 4/3 倍:

$ echo $((1024*8/6))
1365

這接近公鑰文件中密鑰的大小。

$ awk '{print $2}' rsatest.pub | wc -c
1397

當然,“私鑰文件”包含(至少)

  1. m 的值(公共模數)
  2. e 的值
  3. d 的值
  4. p 的值
  5. q 的值

而且,事實上,它包含 8 個(大小)數字:

cat rsatest | grep -v -- ----- | tr -d '\n' | base64 -d | openssl asn1parse -inform DER

將大小增加至少 4 倍,它包含 6363 個字節。

查看私有文件的其他一些方法是:

openssl rsa -text -in rsatest

這表明文件包含的內容是整數

  • 模量
  • 公共指數
  • 私人指數
  • 素數1
  • 素數2
  • 指數1
  • 指數2
  • 係數

引用自:https://unix.stackexchange.com/questions/422099