Как зашифровать строку в защищенный ASCII-файл на ходу

В настоящий момент я действительно изо всех сил пытаюсь найти ошибку в своем коде - задача состоит в том, чтобы зашифровать строку в защищенный файл pgp ASCII - простую вещь, о которой можно подумать.

Я использую следующую функцию, вдохновленную этой сущностью:

// 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 ответ

Решение

Тем не менее, ребята на другом конце получают это сообщение об ошибке:

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

Если вы зашифровали правильный ключ, я не думаю, что вы сделали что-то не так. Взглянув на этот ключ на серверах ключей, вы зашифровали с использованием новейшего (и единственного) подраздела шифрования.

Если "парень на другом конце" получает сообщение об ошибке, указывающее, что он не будет держать секретный ключ, то либо

  • вы используете неправильный ключ для шифрования,
  • "другой парень" дал вам неправильный ключ или
  • "другой парень" испортил себя.

Вы можете проверить, что идет не так, передав зашифрованное содержимое gpg --list-packets или же pgpdump, которые перечисляют пакеты OpenPGP, содержащиеся в сообщении, и очень полезны при отладке проблем OpenPGP.

Другие вопросы по тегам