如何使用golang ssh加密的私钥
发布时间:2020-12-16 19:22:19 所属栏目:大数据 来源:网络整理
导读:我很感激指针,因为我无法解决如何解密加密密钥以便与golang ssh一起使用它.我正在尝试将两个其他代码源(包括 this个)混合在一起但无法使其工作. 我想我正在使用DER,但需要将其编组回PEM以便将其与crypto / ssh一起使用 -----BEGIN RSA PRIVATE KEY-----Proc-
我很感激指针,因为我无法解决如何解密加密密钥以便与golang ssh一起使用它.我正在尝试将两个其他代码源(包括
this个)混合在一起但无法使其工作.
我想我正在使用DER,但需要将其编组回PEM以便将其与crypto / ssh一起使用 -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: AES-128-CBC,D7C72273BE168626E5B2D1BC72E56326 ... -----END RSA PRIVATE KEY----- 我读了它: key,err := ioutil.ReadFile(privateKey) if err != nil { log.Fatalf("Unable to read private key: %v",err) } 使用未加密的(!)键,我可以: signer,err := ssh.ParsePrivateKey(key) if err != nil { log.Fatalf("Unable to parse private key: %v",err) } config := &ssh.ClientConfig{ User: username,Auth: []ssh.AuthMethod{ ssh.PublicKeys(signer),},} 这会奏效. 我重用了一些代码,我认为解密后的PEM作为DER: func decrypt(key []byte,password []byte) []byte { block,rest := pem.Decode(key) if len(rest) > 0 { log.Fatalf("Extra data included in key") } der,err := x509.DecryptPEMBlock(block,password) if err != nil { log.Fatalf("Decrypt failed: %v",err) } return der } 但是,我如何从DER到签名者? 或者,解决这个问题的最佳方法是什么?
如果您有带RSA私钥的DER块,则使用x509.ParsePKCS1PrivateKey来解析密钥,使用ssh.NewSignerFromKey来获取ssh.Signer
key,err := x509.ParsePKCS1PrivateKey(der) if err != nil { log.Fatal(err) } signer := ssh.NewSignerFromKey(key) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- delphi – 如何在TDBGrid中的查找字段上允许空值?
- Lua pairs与ipairs效率分析
- Delphi MlSkin V2.3 (2015.04.12)发布啦! 它能让你的程序拥
- delphi – 用于Microsoft Access的dbExpress驱动程序
- 网上流传两个版本的DCB,经过验证有一个有问题
- delphi取得文件图标并在TListView中显示
- perl最佳实践(Perl Best Practices )重点摘要
- lua string.format
- Go语言学习之time包(获取当前时间戳等)(the way to go)
- php – Laravel日志记录:日志行末尾的额外方括号?