Go - 如何从 PublicKey 生成 SSH PublicKey 指纹,PublicKey 的类型可能是 [ rsa dsa ssh-rsa ssh-dss ecdsa ] 之一
Go - How to Generate an SSH PublicKey Fingerprint from PublicKey, the PublicKey's type maybe is one of [ rsa dsa ssh-rsa ssh-dss ecdsa ]
我只有一个PublicKey字符串,如何获取PublicKey指纹?
我有一些想法形式https://go-review.googlesource.com/c/crypto/+/32814,但我不知道如何
实现 ssh.PublicKey 接口。
您可能想使用 ssh 包中的 ssh.ParseAuthorizedKey 来加载密钥:
https://godoc.org/golang.org/x/crypto/ssh#ParseAuthorizedKey
这将为您提供一个 public 密钥,您可以在该密钥上调用 ssh.FingerprintLegacyMD5 以获取指纹(假设您需要 md5)。
https://godoc.org/golang.org/x/crypto/ssh#FingerprintLegacyMD5
https://godoc.org/golang.org/x/crypto/ssh#FingerprintSHA256
func main() {
// Read a key from a file in authorized keys file line format
// This could be an rsa.pub file or a line from authorized_keys
pubKeyBytes := []byte(`ssh-rsa AAAABMYKEY...ABC me@myplace.local`)
// Parse the key, other info ignored
pk, _, _, _, err := ssh.ParseAuthorizedKey(pubKeyBytes)
if err != nil {
panic(err)
}
// Get the fingerprint
f := ssh.FingerprintLegacyMD5(pk)
// Print the fingerprint
fmt.Printf("%s\n", f)
}
提供了两种指纹功能,不知道你需要哪一种。
我只有一个PublicKey字符串,如何获取PublicKey指纹?
我有一些想法形式https://go-review.googlesource.com/c/crypto/+/32814,但我不知道如何
实现 ssh.PublicKey 接口。
您可能想使用 ssh 包中的 ssh.ParseAuthorizedKey 来加载密钥:
https://godoc.org/golang.org/x/crypto/ssh#ParseAuthorizedKey
这将为您提供一个 public 密钥,您可以在该密钥上调用 ssh.FingerprintLegacyMD5 以获取指纹(假设您需要 md5)。
https://godoc.org/golang.org/x/crypto/ssh#FingerprintLegacyMD5 https://godoc.org/golang.org/x/crypto/ssh#FingerprintSHA256
func main() {
// Read a key from a file in authorized keys file line format
// This could be an rsa.pub file or a line from authorized_keys
pubKeyBytes := []byte(`ssh-rsa AAAABMYKEY...ABC me@myplace.local`)
// Parse the key, other info ignored
pk, _, _, _, err := ssh.ParseAuthorizedKey(pubKeyBytes)
if err != nil {
panic(err)
}
// Get the fingerprint
f := ssh.FingerprintLegacyMD5(pk)
// Print the fingerprint
fmt.Printf("%s\n", f)
}
提供了两种指纹功能,不知道你需要哪一种。