2017-09-26 3 views
3

私はPublicKey文字列しか持っていません。 私はhttps://go-review.googlesource.com/c/crypto/+/32814のフォームを持っていますが、どのようにして
にssh.PublicKeyインターフェイスを実装するのか分かりません。Go - PublicKeyからSSH PublicKey Fingerprintを生成するには、PublicKeyの種類は[rsa dsa ssh-rsa ssh-dss ecdsa]のいずれか1つである可能性があります

+1

公開鍵には単一の指紋はありません。指紋は公開鍵のハッシュだけであり、任意のハッシュアルゴリズムを自由に選択できます。 Go標準ライブラリには、それぞれのcrypto/*パッケージの一般的な鍵タイプ用の公開鍵実装がすでに用意されています。私はあなたが自分自身を実装する必要があるとは思わない。 – Peter

答えて

3

おそらくキーをロードするためにsshパッケージからssh.ParseAuthorizedKeyを使用したい:

https://godoc.org/golang.org/x/crypto/ssh#ParseAuthorizedKey

あなたが取得するために、上の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 [email protected]`) 

    // 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) 
} 

、あなたが必要があるかわからない設けられた二つの指紋の機能があります。

+0

それは私が欲しいものです、ありがとう。 – fishu

関連する問題