当前位置:首页 > 技术教程 > 正文内容

golang实现chacha20和chacha20poly1305加密解密

佳鑫7个月前 (01-14)技术教程10320

本来之前是想打算用aes来加密数据库数据的,但是后面看到了chacha20,了解了一下就选择了后者,但是中文互联网上没找到golang的实现,故贴出来一下帮助以后搜索的萌新……

chacha20包信息  https://pkg.go.dev/golang.org/x/crypto/chacha20

chacha20poly1305包信息  https://pkg.go.dev/golang.org/x/crypto/chacha20poly1305

文档上面说要安全性的话更推荐chacha20poly1305,但是chacha20poly1305加密后的数据比chacha20大了很多,这就看自己的选择了

直接上代码

func chacha20_func() {
    msg := []byte("你是我的小啊小苹果")
    key := make([]byte, chacha20.KeySize)
    nonce := make([]byte, chacha20.NonceSize)

    encryption, _ := chacha20.NewUnauthenticatedCipher(key, nonce)
    ciphertext := make([]byte, len(msg))
    encryption.XORKeyStream(ciphertext, msg)
    fmt.Println("chacha20加密:", hex.EncodeToString(ciphertext))

    decrypt, _ := chacha20.NewUnauthenticatedCipher(key, nonce)
    plaintext := make([]byte, len(msg))
    decrypt.XORKeyStream(plaintext, ciphertext)
    fmt.Println("chacha20解密:", string(plaintext))
}
func chacha20_1305_func() {
    msg := []byte("你是我的小啊小苹果")
    key := make([]byte, chacha20poly1305.KeySize)
    nonce := make([]byte, chacha20poly1305.NonceSize)

    aead, err := chacha20poly1305.New(key)
    if err != nil {
        panic(err)
    }

    ciphertext := aead.Seal(nil, nonce, msg, nil)
    fmt.Println("chacha20poly1305加密:", hex.EncodeToString(ciphertext))

    plaintext, _ := aead.Open(nil, nonce, ciphertext, nil)
    fmt.Println("chacha20poly1305解密:", string(plaintext))
}


扫描二维码推送至手机访问。

版权声明:本文由葭兴网 JaXing.cc发布,如需转载请注明出处。

本文链接:https://www.jaxing.cc/p/19.html

分享给朋友:
返回列表

上一篇:宝塔面板一键安装golang环境脚本

没有最新的文章了...

“golang实现chacha20和chacha20poly1305加密解密” 的相关文章

【教程】PHP简单实现TCPing

说起来ping命令大家可能都不陌生,一般家里网络不好可能就经常ping baidu.com 来测试网络贯通性,亦或者某某网站打不开了用ping来试一下是不是寄了,再或者就是用ping来获取网站的ip但是一说到tcping就有点茫然了,从没用过阿其实ping和tcping都差不多,就是协议层上的区别p...

无需电脑,借助termux使其Android手机自己adb自己

无需电脑,借助termux使其Android手机自己adb自己

*本文内容仅适用于Android11(R)以上,因为11以下没有无限adb调试首先要下载好termux才能进行后续操作官方下载v118>>蓝奏云下载v118(推荐)>>开启手机开发者选项(以MIUI13为例)连接WIFI后进入开发者选项并启用无线调试选勾 始终允许通过此网络进...

宝塔面板一键安装golang环境脚本

宝塔面板一键安装golang环境脚本

由于宝塔官方迟迟不出golang一键环境且php逐渐满足不了性能,开始尝试go的怀抱开始教程:(本文环境:宝塔面板7.9.0+,OpenCloudOS8.6,x86_64,go1.20.5.linux-amd64.tar.gz)①首先确保宝塔面板已安装完成,且能正常使用,没有宝塔面板的话不保证脚本在...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。