windows - 如何在 Windows 上获取 RSA 公钥的 MD5 指纹?

标签 windows cmd rsa md5 public-key

前言:使用 Android Studio 并将我的“Hello World”应用程序推送到手机上时,我看到了如下所示的确认对话框:

Allow USB debugging?

The computer's RSA key fingerprint is:

<some_md5_fingerprint>

[] Always allow from this computer

CANCEL OK

虽然我很确定是我的机器在尝试连接,但我问自己如何确认这一点。

这引发了另外两个具体问题

:
  • RSA 公钥在哪里?
  • 如何获取 RSA 公钥的 MD5 指纹?

此外,我想要一个广泛使用的答案,以便每个 Windows(在我的例子中是 win7)用户都可以使用该解决方案,而无需安装软件。

最佳答案

我正在使用 cmd 及其 for 循环以及 certUtil,它们应该都已预先安装。

打开cmd

  • 按下 Windows Key +R 并输入 cmd 然后确认,或者
  • 打开 Windows 的“开始”菜单,搜索 cmd.exe 并执行。

TLDR

for /F "tokens=2" %a in (id_rsa.pub) DO (echo %a) > tmp.key_base64
certUtil -decode tmp.key_base64 tmp.key_bytes
certUtil -hashfile tmp.key_bytes MD5

RSA 公钥在哪里?

通常 key 保存在用户家下的.ssh目录中。

(Android Studio 存储了不同的(!) key ,adbkey.pub,在用户主目录下的目录 .android 及其安装目录中,这里是 C:\Android\.android - 在上面序言中提到的过程中,两个 key 都被发送到手机。)

打开控制台后,你应该已经在你的主目录中,只需要更改为 .ssh

C:\Users\%USERNAME%>cd .ssh

如果您不在您的主目录类型中

cd \Users\%USERNAME%\.ssh

并执行。

(对于 Android Studio,将目录分别更改为 \Users\%USERNAME%\.android\Android\.android。)

如何获取 RSA 公钥的 MD5 指纹?

为此我需要知道文件中的实际 key 是 base64 编码的部分,即 long cryptic string of characters .在我的例子中,key 字段 后面总是跟着一个 user-host 字段,即像 user@domain.com 这样的字符串(也 unknown@unknown),在某些情况下,前面有一个包含 ssh-rsa 的字段。

在后一种情况下,我需要过滤第二个字段。在 Windows 中,显然,这是使用 for 循环完成的。我还将输出发送到一个文件,供 certUtil 进行后续消化,它的输出再次进入一个文件 - 包含的 key 不再使用 base64 编码,而是以字节为单位 - 最后使用 MD5 进行哈希处理。

将我的 id_rsa.pub 的第二个字段中的 key 提取到名为 tmp.key_base64 的文件中:

for /F "tokens=2" %a in (id_rsa.pub) DO (echo %a) > tmp.key_base64

(Android Studio adbkey.pub 的第一个字段:"tokens=1")

Base64 解码以接收文件 tmp.key_bytes 中的实际公钥:

certUtil -decode tmp.key_base64 tmp.key_bytes

使用 MD5 散列 key :

certUtil -hashfile tmp.key_bytes MD5

关于windows - 如何在 Windows 上获取 RSA 公钥的 MD5 指纹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48992472/

相关文章:

c++ - 无法在 Windows Store App 中访问 USB 设备

windows - Opa:找不到 Nodejs

php - Windows 上的 PEAR 目录问题

python - 将 RSA 解密函数从 Golang 翻译成 Python

java - 如何将字符串转换为私钥?

c# - 如何验证 RSA 公钥?

windows - Windows 商店应用程序中是否提供语音识别 API?

windows - 修复循环以保存基本的 Windows 进程及其路径,并终止其余进程

windows - 为什么具有延迟扩展的 cmd batch IF 在 For 循环中给出错误的结果?

windows - 如何在Windows中自动同步日期和时间?