为了账号安全,请及时绑定邮箱和手机立即绑定

go - 如何在go中将字符串加密为ASCII装甲文件

go - 如何在go中将字符串加密为ASCII装甲文件

Go
慕尼黑8549860 2022-01-10 11:00:34
我现在真的很难在我的代码中找到错误——任务是将一个字符串加密到一个 pgp ASCII 装甲文件中——这是一件简单的事情。受此要点启发,我使用以下函数:// pgp encryption using the pgp RSA certificate// massive thx to https://gist.github.com/jyap808/8250124func encToFile(secretString string, filename string) (string, error) {  log.Println("Public Keyring: ", publicKeyring)  encryptionType := "PGP MESSAGE"  // Read in public key  keyringFileBuffer, _ := os.Open(publicKeyring)  defer keyringFileBuffer.Close()   entityList, err := openpgp.ReadArmoredKeyRing(keyringFileBuffer)   check(err)  encbuf := bytes.NewBuffer(nil)  w, err := armor.Encode(encbuf, encryptionType, nil) // the encoder somehow makes this into ASCII armor  check(err)  plaintext, err := openpgp.Encrypt(w, entityList, nil, nil, nil)  check(err)  message := []byte(secretString)  _, err = plaintext.Write(message)  plaintext.Close()  w.Close()  // Output encrypted/encoded string  log.Println("Writing Encrypted Secred to: ", filename)  // we write the file into a file  err = ioutil.WriteFile(filename, encbuf.Bytes(), 0644)  check(err)  log.Println("File:\n", encbuf.String())  return encbuf.String(), nil}但是,另一端的人收到此错误消息:gpg: encrypted with RSA key, ID 5BE299DCgpg: decryption failed: No secret key非常欢迎提示和建议!
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

但是,另一端的人收到此错误消息:

gpg: encrypted with RSA key, ID 5BE299DC
gpg: decryption failed: No secret key

如果您为正确的密钥加密,我认为您没有做错任何事情。查看密钥服务器上的该密钥,您已加密为最新的(也是唯一的)加密子密钥。

如果“另一端的人”收到一条错误消息,表明他不会持有密钥,那么要么

  • 您使用错误的密钥进行加密,

  • “另一个人”给了你错误的钥匙或

  • “另一个人”把自己搞砸了。

您可以通过将加密的内容传递给gpg --list-packetsor来验证出了什么问题pgpdump,它列出了消息中包含的 OpenPGP 数据包,并且对于调试 OpenPGP 问题非常有帮助。


查看完整回答
反对 回复 2022-01-10
  • 1 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信