如何在转发

时间:2016-05-06 14:56:15

标签: go pgp openpgp

我目前正在努力寻找代码中的错误 - 任务是将字符串加密为pgp ASCII装甲文件 - 这是一个人们可以想到的简单事情。

我使用以下函数,受此gist启发:

// pgp encryption using the pgp RSA certificate
// massive thx to https://gist.github.com/jyap808/8250124
func 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 5BE299DC
gpg: decryption failed: No secret key

非常欢迎提示和建议!

1 个答案:

答案 0 :(得分:1)

  

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

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

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

如果另一端的"家伙"收到一条错误消息,表明他不会持有密钥,然后

  • 您使用错误的密钥进行加密,
  • "另一个人"给了你错误的钥匙或
  • "另一个人"搞砸了自己。

您可以通过将加密内容传递给gpg --list-packetspgpdump来验证出现了什么问题,opacity:1;:focus列出了消息中包含的OpenPGP数据包,并且非常有助于调试OpenPGP问题。< / p>