Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Golang AES StreamReader加密 – 示例省略了对加密数据的任何身份验证大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_262_0@ 最后,我在StackOverflow上发布了我的第一个问题.我现在使用这个网站多年了,我总能找到所有问题的答案:)

我正在实现一个基于official Golang cipher example文件加密后台守护进程:

func ExampleStreamReader() {
    key := []byte("example key 1234")

    inFile,err := os.Open("encrypted-file")
    if err != nil {
        panic(err)
    }
    defer inFile.Close()

    block,err := aes.NewCipher(key)
    if err != nil {
        panic(err)
    }

    // If the key is unique for each ciphertext,then it's ok to use a zero
    // IV.
    var iv [aes.blockSize]byte
    stream := cipher.NewOFB(block,iv[:])

    outFile,err := os.OpenFile("decrypted-file",os.O_WRONLY|os.O_CREATE|os.O_TRUNC,0600)
    if err != nil {
        panic(err)
    }
    defer outFile.Close()

    reader := &cipher.StreamReader{S: stream,R: inFilE}
    // Copy the input file to the output file,decrypTing as we go.
    if _,err := io.Copy(outFile,reader); err != nil {
        panic(err)
    }

    // Note that this example is simplistic in that it omits any
    // authentication of the encrypted data. If you were actually to use
    // StreamReader in this mAnner,an attacker Could flip arbitrary bits in
    // the output.
}

func ExampleStreamWriter() {
    key := []byte("example key 1234")

    inFile,err := os.Open("plaintext-file")
    if err != nil {
        panic(err)
    }
    defer inFile.Close()

    block,err := os.OpenFile("encrypted-file",0600)
    if err != nil {
        panic(err)
    }
    defer outFile.Close()

    writer := &cipher.StreamWriter{S: stream,W: outFilE}
    // Copy the input file to the output file,encrypTing as we go.
    if _,err := io.Copy(writer,inFilE); err != nil {
        panic(err)
    }

    // Note that this example is simplistic in that it omits any
    // authentication of the encrypted data. If you were actually to use
    // StreamReader in this mAnner,an attacker Could flip arbitrary bits in
    // the decrypted result.
}@H_674_4@ 
 

以下引用是什么意思?关于我应该注意什么才能提供安全的加密和解密?

谢谢!

来自维基百科:

可以在这里找到一个很好的解释:https://security.stackexchange.com/a/33576.

Go支持其他支持完整性和身份验证检查的模式.正如rossum所说,你可以使用GCMCCM.你可以在godoc.org找到很多例子.例如HashiCorp的memberlist library.

一个值得一试的图书馆是golang.org/x/crypto/nacl年的NaCL港口:

func Open(out []byte,Box []byte,nonce *[24]byte,key *[32]bytE) ([]byte,bool)
func Seal(out,message []byte,key *[32]bytE) []byte@H_674_4@ 
 

如果您正在使用小消息,则此API可能会更容易使用.

大佬总结

以上是大佬教程为你收集整理的Golang AES StreamReader加密 – 示例省略了对加密数据的任何身份验证全部内容,希望文章能够帮你解决Golang AES StreamReader加密 – 示例省略了对加密数据的任何身份验证所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。