如何在Go中解密使用Openssl aes-256-cbc加密的文件

如何在Go中解密使用Openssl aes-256-cbc加密的文件,go,encryption,openssl,aes,Go,Encryption,Openssl,Aes,我正在使用OpenSSL AES-256-CBC加密我的一些文件 openssl aes-256-cbc-in filename.txt-out filename.enc-k密码 如何在Go中解密这些文件?我希望这能有所帮助,请确保您在opensslEncrypted变量中读取文件字节: 安装 git clone https://github.com/funny/crypto 解密: import ( "fmt" "github.com/funny/crypto/aes256cbc"

我正在使用OpenSSL AES-256-CBC加密我的一些文件

openssl aes-256-cbc-in filename.txt-out filename.enc-k密码


如何在Go中解密这些文件?

我希望这能有所帮助,请确保您在opensslEncrypted变量中读取文件字节:

安装

git clone https://github.com/funny/crypto
解密:

import (
  "fmt"
  "github.com/funny/crypto/aes256cbc"
)

func main() {
    opensslEncrypted := "U2FsdGVkX19ZM5qQJGe/d5A/4pccgH+arBGTp+QnWPU="
    passphrase := "z4yH36a6zerhfE5427ZV"

    dec, err := aes256cbc.DecryptString(passphrase, opensslEncrypted)
    if err != nil {
        fmt.Printf("An error occurred: %s\n", err)
    }

    fmt.Printf("Decrypted text: %s\n", string(dec))
}

来源:

您是否尝试过这样做:OpenSSL使用非标准、不安全的函数将密码转换为加密密钥。一个选项是自己派生密钥,并使用
-K
选项。有关内置函数如何工作的详细信息,请参阅(您可以将该代码移植到Go中)。我没有看到这里的复杂性,为什么不在Go中使用OpenSSL绑定呢?(例如)@Woodstock添加对OpenSSL的依赖(以及cgo带来的所有痛苦)只是为了解密一个文件,这是相当过分的。Go内置了非常成熟的加密支持