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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用crypto/aes lib的Golang文件加密

使用crypto/aes lib的Golang文件加密

Go
躍然一笑 2021-11-01 17:18:42
我正在嘗試使用 Go crypto/aes 包加密文件。我到目前為止:func encrypt(source string, localdir string) error {    src := filepath.Join("/home/bacula/cloud-backup/"+localdir, source)    dst := filepath.Join(src + ".aes")    fmt.Println(src)    fmt.Println(dst)    key := []byte("example key 1234")    iv := []byte(key)[:aes.BlockSize]    aesBlockEncrypter, err := aes.NewCipher([]byte(key))    if err != nil {            return err    }    aesEncrypter := cipher.NewCFBEncrypter(aesBlockEncrypter, iv)    aesEncrypter.XORKeyStream([]byte(dst), []byte(src))    return nil}我的第一個問題是,如何改進(jìn)生成 IV 的方式?其次,沒有輸出文件,那么如何通過 XORKeyStream 流式傳輸文件?
查看完整描述

1 回答

?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗 獲得超4個贊

crypto/cipher包文檔中有一個示例。


我已經(jīng)調(diào)整了示例為您制作了新示例:


func main() {

    // read content from your file

    plaintext, err := ioutil.ReadFile("you_file_to_be_encrypted")

    if err != nil {

        panic(err.Error())

    }


    // this is a key

    key := []byte("example key 1234")


    block, err := aes.NewCipher(key)

    if err != nil {

        panic(err)

    }


    // The IV needs to be unique, but not secure. Therefore it's common to

    // include it at the beginning of the ciphertext.

    ciphertext := make([]byte, aes.BlockSize+len(plaintext))

    iv := ciphertext[:aes.BlockSize]

    if _, err := io.ReadFull(rand.Reader, iv); err != nil {

        panic(err)

    }


    stream := cipher.NewCFBEncrypter(block, iv)

    stream.XORKeyStream(ciphertext[aes.BlockSize:], plaintext)


    // create a new file for saving the encrypted data.

    f, err := os.Create("a_aes.txt")

    if err != nil {

        panic(err.Error())

    }

    _, err = io.Copy(f, bytes.NewReader(ciphertext))

    if err != nil {

        panic(err.Error())

    }


    // done

}


查看完整回答
反對 回復(fù) 2021-11-01
  • 1 回答
  • 0 關(guān)注
  • 268 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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