第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Go 中解密非 ASCII 裝甲 PGP 文件

在 Go 中解密非 ASCII 裝甲 PGP 文件

Go
慕村9548890 2023-06-01 17:01:40
是否可以使用 Go 的“golang.org/x/crypto/openpgp”庫(kù)解密二進(jìn)制 .PGP 文件?以下代碼適用于裝甲 ASCII 編碼文件,但會(huì)拋出二進(jìn)制 PGP 文件的 EOF 錯(cuò)誤。是否有類(lèi)似于 armor.Decode() 的函數(shù)允許解密二進(jìn)制文件?func DecryptFile(encryptedFilePath string, decryptedFilePath string) error {pubKey := decodePublicKey()privKey := decodePrivateKey()entity := createEntityFromKeys(pubKey, privKey)file := readFile(encryptedFilePath)block, err := armor.Decode(file)if err != nil {    log.Printf("Error reading OpenPGP Armor: %s", err)    return err}if block.Type != "Message" {    log.Println("Invalid message type")    return err}var entityList openpgp.EntityListentityList = append(entityList, entity)messageDetails, err := openpgp.ReadMessage(block.Body, entityList, nil, nil)if err != nil {    log.Printf("Error reading message: %s", err)    return err}compressed, err := gzip.NewReader(messageDetails.UnverifiedBody)if err != nil {    log.Printf("Invalid compression level: %s", err)    return err}defer compressed.Close()buffer := bytes.NewBuffer(nil)n, err := io.Copy(buffer, compressed)if err != nil {    log.Printf("Error reading encrypted file: %s", err)    return err}err = ioutil.WriteFile(decryptedFilePath, buffer.Bytes(), 0644)if err != nil {    log.Println(err)    return err}log.Printf("Decrypted %d bytes\n", n)return nil}
查看完整描述

1 回答

?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊

我遇到了與 PGP 完全相同的問(wèn)題,在我的第一次試用中也遇到了 EOF。


加密文件為二進(jìn)制文件(.pgp)


密鑰環(huán)裝甲文件 (.asc) 中的私鑰/公鑰如下所示:


----BEGIN PGP PUBLIC KEY BLOCK-----


-----END PGP PRIVATE KEY BLOCK-----

這是我使用的代碼:


keyRing, err := os.Open("keyArmoredFile.asc")

if err != nil {

? ? log.Fatal(err)

}


entityList, err := openpgp.ReadArmoredKeyRing(keyRing)

if err != nil {

? ? log.Fatal(err)

}


entity := entityList[0]

passphraseByte := []byte("password")

err = entity.PrivateKey.Decrypt(passphraseByte)

if err != nil {

? ? log.Fatal(err)

}

for _, subkey := range entity.Subkeys {

? ? subkey.PrivateKey.Decrypt(passphraseByte)

}


encryptedContent, err := os.Open("encryptedFile.pgp")

if err != nil {

? ? log.Fatal(err)

}


md, err := openpgp.ReadMessage(encryptedContent, entityList, nil, nil)

if err != nil {

? ? log.Fatal(err)}


bytes, err := ioutil.ReadAll(md.UnverifiedBody)

if err != nil {

? ? log.Fatal(err)

}


// decryption result

decStr := string(bytes)

查看完整回答
反對(duì) 回復(fù) 2023-06-01
  • 1 回答
  • 0 關(guān)注
  • 158 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)