我有一个rsa.PublicKey
对象(从rsa.PrivateKey中检索)。我正在尝试将其导出为OpenSSH格式,以便在网页中显示。
我注意到了go.crypto/ssh library,这似乎就是这样做的 并且the discussion关于它的实现(它实际上正是我需要做的)
不幸的是,我有点卡住,因为返回的字节数组是未知的编码,我不能只将其转换为字符串来显示它。
func PublicKey(rsaKey rsa.PublicKey) string {
key, _ := ssh.NewPublicKey(&rsaKey)
marshalled := ssh.MarshalPublicKey(key)
return string(marshalled)
}
这似乎有效,因为它在字符串的开头添加了ssh-rsa
。但是,大多数字符都无法识别。
这是我正在检索lambda公钥的字节数组:
[0 0 0 7 115 115 104 45 114 115 97 0 0 0 3 1 0 1 0 0 0 65 0 178 153 15 73 196 125 250 140 212 0 174 106 77 27 138 59 106 19 100 43 35 242 139 0 59 251 151 121 10 222 154 76 200 43 139 42 129 116 125 222 192 139 98 150 229 58 8 195 49 104 126 242 92 75 244 147 107 161 192 230 4 30 157 21]
有关将此字节数组正确显示为字符串的任何提示吗?
答案 0 :(得分:4)
对密钥进行编组是针对有线格式的。您只需要对字节进行base64编码:
base64.StdEncoding.EncodeToString(marshalled) + "\n"