Чтение зашифрованного при помощи gpg -c файла в golang

Рейтинг: 1Ответов: 1Опубликовано: 30.03.2023

У меня есть файл test.txt который я зашифровал при помощи gpg -c text.txt Можно ли в программе на языке go открыть такой файл и прочитать содержимое (пароль, конечно, мне известен)

Ответы

▲ 3Принят

Если вы зашифровали gpg -c, то в файле text.txt.gpg находится binary message. Его можно расшифровать средствами пакета github.com/ProtonMail/gopenpgp/v2/:

package main

import (
    "fmt"
    "io"
    "log"
    "os"

    "github.com/ProtonMail/gopenpgp/v2/armor"
    "github.com/ProtonMail/gopenpgp/v2/constants"
    "github.com/ProtonMail/gopenpgp/v2/helper"
)

func main() {
    gpgfile := "text.txt.gpg"
    data := Must(io.ReadAll(Must(os.Open(gpgfile))))
    pwd := "123"

    armored := Must(armor.ArmorWithType(data, constants.PGPMessageHeader))
    txt := Must(helper.DecryptMessageWithPassword([]byte(pwd), armored))
    fmt.Println(txt)
}

func Must[T any](val T, err error) T {
    if err != nil {
        log.Fatal(err.Error())
    }
    return val
}

Результат работы программы:

Hello, world!

Это в точности содержимое файла text.txt