go-dongle 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
go-dongle 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
go-dongle 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 Google Go 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 peleus
适用人群 未知
收录时间 2021-08-11

软件简介

go-dongle 是一个轻量级、语义化、对开发者友好的 golang 编码解码、加密解密库。

如果您觉得不错,请给个 star 吧

github.com/golang-module/dongle

gitee.com/golang-module/dongle

安装使用

// 使用 github 库
go get -u github.com/golang-module/dongle

import (
    "github.com/golang-module/dongle"
)

// 使用 gitee 库
go get -u gitee.com/golang-module/dongle

import (
    "gitee.com/golang-module/dongle"
)

用法示例

Hex 编码、解码

// 对字符串进行 hex 编码,输出字符串
dongle.Encode.FromString("hello world").ByHex().ToString() // 68656c6c6f20776f726c64
// 对字符串进行 hex 解码,输出字符串
dongle.Decode.FromString("68656c6c6f20776f726c64").ByHex().ToString() // hello world

// 对字节切片进行 hex 编码,输出字符串
dongle.Encode.FromBytes([]byte("hello world")).ByHex().ToString() // 68656c6c6f20776f726c64
// 对字节切片进行 hex 解码,输出字符串
dongle.Decode.FromBytes([]byte("68656c6c6f20776f726c64")).ByHex().ToString() // hello world

// 对字符串进行 hex 编码,输出字节切片
dongle.Encode.FromString("hello world").ByHex().ToBytes() // []byte("68656c6c6f20776f726c64")
// 对字符串进行 hex 解码,输出字节切片
dongle.Decode.FromString("68656c6c6f20776f726c64").ByHex().ToBytes() // []byte("hello world")

// 对字节切片进行 hex 编码,输出字节切片
dongle.Encode.FromBytes([]byte("hello world")).ByHex().ToBytes() // []byte("68656c6c6f20776f726c64")
// 对字节切片进行 hex 解码,输出字节切片
dongle.Decode.FromBytes([]byte("68656c6c6f20776f726c64")).ByHex().ToBytes() // []byte("hello world")

Base32 编码、解码

// 对字符进行 base32 编码,输出字符串
dongle.Encode.FromString("hello world").ByBase32().ToString() // NBSWY3DPEB3W64TMMQ======
// 对字符串进行 base32 解码,输出字符串
dongle.Decode.FromString("NBSWY3DPEB3W64TMMQ======").ByBase32().ToString() // hello world

// 对字节切片进行 base32 编码,输出字符串
dongle.Encode.FromBytes([]byte("hello world")).ByBase32().ToString() // NBSWY3DPEB3W64TMMQ======
// 对字节切片进行 base32 解码,输出字符串
dongle.Decode.FromBytes([]byte("NBSWY3DPEB3W64TMMQ======")).ByBase32().ToString() // hello world

// 对字符串进行 base32 编码,输出字节切片
dongle.Encode.FromString("hello world").ByBase32().ToBytes() // []byte("NBSWY3DPEB3W64TMMQ======")
// 对字符串进行 base32 解码,输出字节切片
dongle.Decode.FromString("NBSWY3DPEB3W64TMMQ======").ByBase32().ToBytes() // []byte("hello world")

// 对字节切片进行 base32 编码,输出字节切片
dongle.Encode.FromBytes([]byte("hello world")).ByBase32().ToBytes() // []byte("NBSWY3DPEB3W64TMMQ======")
// 对字节切片进行 base32 解码,输出字节切片
dongle.Decode.FromBytes([]byte("NBSWY3DPEB3W64TMMQ======")).ByBase32().ToBytes() // []byte("hello world")

Base64 编码、解码

// 对字符串进行 base64 编码,输出字符串
dongle.Encode.FromString("hello world").ByBase64().ToString() // aGVsbG8gd29ybGQ=
// 对字符串进行 base64 解码,输出字符串
dongle.Decode.FromString("aGVsbG8gd29ybGQ=").ByBase64().ToString() // hello world

// 对字节切片进行 base64 编码,输出字符串
dongle.Encode.FromBytes([]byte("hello world")).ByBase64().ToString() // aGVsbG8gd29ybGQ=
// 对字节切片进行 base64 解码,输出字符串
dongle.Decode.FromBytes([]byte("aGVsbG8gd29ybGQ=")).ByBase64().ToString() // hello world

// 对字符串进行 base64 编码,输出字节切片
dongle.Encode.FromBytes([]byte("hello world")).ByBase64().ToString() // aGVsbG8gd29ybGQ=
// 对字符串进行 base64 解码,输出字节切片
dongle.Decode.FromString("aGVsbG8gd29ybGQ=").ByBase64().ToBytes() // []byte("hello world")

// 对字节切片进行 base64 编码,输出字节切片
dongle.Encode.FromString("hello world").ByBase64().ToBytes() // []byte("aGVsbG8gd29ybGQ=")
// 对字节切片进行 base64 解码,输出字节切片
dongle.Decode.FromBytes([]byte("aGVsbG8gd29ybGQ=")).ByBase64().ToBytes() // []byte("hello world")

Base64URL 编码、解码

// 对 url 字符进行 base64 编码,输出字符串
dongle.Encode.FromString("www.gouguoyin.cn").ByBase64URL().ToString() // d3d3LmdvdWd1b3lpbi5jbg==
// 对 url 字符进行 base64 解码,输出字符串
dongle.Decode.FromString("d3d3LmdvdWd1b3lpbi5jbg==").ByBase64URL().ToString() // www.gouguoyin.cn

// 对 url 字节切片进行 base64 编码,输出字符串
dongle.Encode.FromBytes([]byte("www.gouguoyin.cn")).ByBase64URL().ToString() // d3d3LmdvdWd1b3lpbi5jbg==
// 对 url 字节切片进行 base64 解码,输出字符串
dongle.Decode.FromBytes([]byte("d3d3LmdvdWd1b3lpbi5jbg==")).ByBase64URL().ToString() // www.gouguoyin.cn

// 对 url 字符进行 base64 编码,输出字节切片
dongle.Encode.FromString("www.gouguoyin.cn").ByBase64URL().ToBytes() // []byte("d3d3LmdvdWd1b3lpbi5jbg==")
// 对 url 字符进行 base64 解码,输出字节切片
dongle.Decode.FromString("d3d3LmdvdWd1b3lpbi5jbg==").ByBase64URL().ToBytes() // []byte("www.gouguoyin.cn")

// 对 url 字节切片进行 base64 编码,输出字节切片
dongle.Encode.FromBytes([]byte("www.gouguoyin.cn")).ByBase64URL().ToBytes() // []byte("d3d3LmdvdWd1b3lpbi5jbg==")
// 对 url 字符进行 base64 解码,输出字节切片
dongle.Decode.FromBytes([]byte("d3d3LmdvdWd1b3lpbi5jbg==")).ByBase64URL().ToBytes() // []byte("www.gouguoyin.cn")

SafeURL 编码、解码

// 对 url 字符进行转义编码,输出字符串
dongle.Encode.FromString("www.gouguoyin.cn?sex=男&age=18").BySafeURL().ToString() // www.gouguoyin.cn%3Fsex%3D%E7%94%B7%26age%3D18
// 对 url 字符进行转义解码,输出字符串
dongle.Decode.FromString("www.gouguoyin.cn%3Fsex%3D%E7%94%B7%26age%3D18").BySafeURL().ToString() // www.gouguoyin.cn?sex=男&age=18

// 对 url 字节切片进行转义编码,输出字符串
dongle.Encode.FromBytes([]byte("www.gouguoyin.cn?sex=男&age=18")).BySafeURL().ToString() // www.gouguoyin.cn%3Fsex%3D%E7%94%B7%26age%3D18
// 对 url 字节切片进行转义解码,输出字符串
dongle.Decode.FromBytes([]byte("www.gouguoyin.cn%3Fsex%3D%E7%94%B7%26age%3D18")).BySafeURL().ToString() // www.gouguoyin.cn?sex=男&age=18

// 对 url 字符进行转义编码,输出字节切片
dongle.Encode.FromString("www.gouguoyin.cn?sex=男&age=18").BySafeURL().ToBytes() // []byte("www.gouguoyin.cn%3Fsex%3D%E7%94%B7%26age%3D18")
// 对 url 字符进行转义解码,输出字节切片
dongle.Decode.FromString("www.gouguoyin.cn%3Fsex%3D%E7%94%B7%26age%3D18").BySafeURL().ToBytes() // []byte("www.gouguoyin.cn?sex=男&age=18")

// 对 url 字节切片进行转义编码,输出字节切片
dongle.Encode.FromBytes([]byte("www.gouguoyin.cn?sex=男&age=18")).BySafeURL().ToBytes() // []byte("www.gouguoyin.cn%3Fsex%3D%E7%94%B7%26age%3D18")
// 对 url 字符进行转义解码,输出字节切片
dongle.Decode.FromBytes([]byte("www.gouguoyin.cn%3Fsex%3D%E7%94%B7%26age%3D18")).BySafeURL().ToBytes() // []byte("www.gouguoyin.cn?sex=男&age=18")

Md4 加密

// 对字符串进行 md4 加密,输出经过 hex 编码的字符串
dongle.Encrypt.FromString("hello world").ByMd4().ToHexString() // aa010fbc1d14c795d86ef98c95479d17
// 对字符串进行 md4 加密,输出经过 base32 编码的字符串
dongle.Encrypt.FromString("hello world").ByMd4().ToBase32String() // VIAQ7PA5CTDZLWDO7GGJKR45C4======
// 对字符串进行 md4 加密,输出经过 base64 编码的字符串
dongle.Encrypt.FromString("hello world").ByMd4().ToBase64String() // qgEPvB0Ux5XYbvmMlUedFw==

// 对字节切片进行 md4 加密,输出经过 hex 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByMd4().ToHexBytes() // []byte("aa010fbc1d14c795d86ef98c95479d17")
// 对字节切片进行 md4 加密,输出经过 base32 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByMd4().ToBase32Bytes() // []byte("VIAQ7PA5CTDZLWDO7GGJKR45C4======")
// 对字节切片进行 md4 加密,输出经过 base64 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByMd4().ToBase64Bytes() // []byte("qgEPvB0Ux5XYbvmMlUedFw==")

// 对文件进行 md4 加密,输出经过 hex 编码的字符串
dongle.Encrypt.FromFile("./LICENSE").ByMd4().ToHexString() // 1240c5c0fb26b585999357915c56b511
// 对文件进行 md4 加密,输出经过 base32 编码的字符串
dongle.Encrypt.FromFile("./LICENSE").ByMd4().ToBase32String() // CJAMLQH3E22YLGMTK6IVYVVVCE======
// 对文件进行 md4 加密,输出经过 base64 编码的字符串
dongle.Encrypt.FromFile("./LICENSE").ByMd4().ToBase64String() // EkDFwPsmtYWZk1eRXFa1EQ==

// 对文件进行 md4 加密,输出经过 hex 编码的字节切片
dongle.Encrypt.FromFile([]byte("./LICENSE")).ByMd4().ToHexBytes() // []byte("1240c5c0fb26b585999357915c56b511")
// 对文件进行 md4 加密,输出经过 base32 编码的字节切片
dongle.Encrypt.FromFile([]byte("./LICENSE")).ByMd4().ToBase32Bytes() // []byte("CJAMLQH3E22YLGMTK6IVYVVVCE======")
// 对文件进行 md4 加密,输出经过 base64 编码的字节切片
dongle.Encrypt.FromFile([]byte("./LICENSE")).ByMd4().ToBase64Bytes() // []byte("EkDFwPsmtYWZk1eRXFa1EQ==")

Hmac-md4 加密

// 对字符串进行 hmac-md4 加密,输出经过 hex 编码的字符串
dongle.Encrypt.FromString("hello world").ByHmacMd4("dongle").ToHexString() // 7a9df5247cbf76a8bc17c9c4f5a75b6b
// 对字符串进行 hmac-md4 加密,输出经过 base32 编码的字符串
dongle.Encrypt.FromString("hello world").ByHmacMd4("dongle").ToBase32String() // PKO7KJD4X53KRPAXZHCPLJ23NM======
// 对字符串进行 hmac-md4 加密,输出经过 base64 编码的字符串
dongle.Encrypt.FromString("hello world").ByHmacMd4("dongle").ToBase64String() // ep31JHy/dqi8F8nE9adbaw==

// 对字节切片进行 hmac-md4 加密,输出经过 hex 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByHmacMd4([]byte("dongle")).ToHexBytes() // []byte("7a9df5247cbf76a8bc17c9c4f5a75b6b")
// 对字节切片进行 hmac-md4 加密,输出经过 base32 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByHmacMd4([]byte("dongle")).ToBase32Bytes() // []byte("PKO7KJD4X53KRPAXZHCPLJ23NM======")
// 对字节切片进行 hmac-md4 加密,输出经过 base64 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByHmacMd4([]byte("dongle")).ToBase64Bytes() // []byte("ep31JHy/dqi8F8nE9adbaw==")

Md5 加密

// 对字符串进行 md5 加密,输出经过 hex 编码的字符串
dongle.Encrypt.FromString("hello world").ByMd5().ToHexString() // 5eb63bbbe01eeed093cb22bb8f5acdc3
// 对字符串进行 md5 加密,输出经过 base32 编码的字符串
dongle.Encrypt.FromString("hello world").ByMd5().ToBase32String() // L23DXO7AD3XNBE6LEK5Y6WWNYM======
// 对字符串进行 md5 加密,输出经过 base64 编码的字符串
dongle.Encrypt.FromString("hello world").ByMd5().ToBase64String() // XrY7u+Ae7tCTyyK7j1rNww==

// 对字节切片进行 md5 加密,输出经过 hex 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByMd5().ToHexBytes() // []byte("5eb63bbbe01eeed093cb22bb8f5acdc3")
// 对字节切片进行 md5 加密,输出经过 base32 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByMd5().ToBase32Bytes() // []byte("L23DXO7AD3XNBE6LEK5Y6WWNYM======")
// 对字节切片进行 md5 加密,输出经过 base64 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByMd5().ToBase64Bytes() // []byte("XrY7u+Ae7tCTyyK7j1rNww==")

// 对文件进行 md5 加密,输出经过 hex 编码的字符串
dongle.Encrypt.FromFile("./LICENSE").ByMd5().ToHexString() // 014f03f9025ea81a8a0e9734be540c53
// 对文件进行 md5 加密,输出经过 base32 编码的字符串
dongle.Encrypt.FromFile("./LICENSE").ByMd5().ToBase32String() // AFHQH6ICL2UBVCQOS42L4VAMKM======
// 对文件进行 md5 加密,输出经过 base64 编码的字符串
dongle.Encrypt.FromFile("./LICENSE").ByMd5().ToBase64String() // AU8D+QJeqBqKDpc0vlQMUw==

// 对文件进行 md5 加密,输出经过 hex 编码的字节切片
dongle.Encrypt.FromFile([]byte("./LICENSE")).ByMd5().ToHexBytes() // []byte("014f03f9025ea81a8a0e9734be540c53")
// 对文件进行 md5 加密,输出经过 base32 编码的字节切片
dongle.Encrypt.FromFile([]byte("./LICENSE")).ByMd5().ToBase32Bytes() // []byte("AFHQH6ICL2UBVCQOS42L4VAMKM======")
// 对文件进行 md5 加密,输出经过 base64 编码的字节切片
dongle.Encrypt.FromFile([]byte("./LICENSE")).ByMd5().ToBase64Bytes() // []byte("AU8D+QJeqBqKDpc0vlQMUw==")

Hmac-md5 加密

// 对字符串进行 hmac-md5 加密,输出经过 hex 编码的字符串
dongle.Encrypt.FromString("hello world").ByHmacMd5("dongle").ToHexString() // 4790626a275f776956386e5a3ea7b726
// 对字符串进行 hmac-md5 加密,输出经过 base32 编码的字符串
dongle.Encrypt.FromString("hello world").ByHmacMd5("dongle").ToBase32String() // I6IGE2RHL53WSVRYNZND5J5XEY======
// 对字符串进行 hmac-md5 加密,输出经过 base64 编码的字符串
dongle.Encrypt.FromString("hello world").ByHmacMd5("dongle").ToBase64String() // R5Biaidfd2lWOG5aPqe3Jg==

// 对字节切片进行 hmac-md5 加密,输出经过 hex 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByHmacMd5([]byte("dongle")).ToHexBytes() // []byte("4790626a275f776956386e5a3ea7b726")
// 对字节切片进行 hmac-md5 加密,输出经过 base32 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByHmacMd5([]byte("dongle")).ToBase32Bytes() // []byte("I6IGE2RHL53WSVRYNZND5J5XEY======")
// 对字节切片进行 hmac-md5 加密,输出经过 base64 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByHmacMd5([]byte("dongle")).ToBase64Bytes() // []byte("R5Biaidfd2lWOG5aPqe3Jg==")

Sha1 加密

// 对字符串进行 sha1 加密,输出经过 hex 编码的字符串
dongle.Encrypt.FromString("hello world").BySha1().ToHexString() // 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
// 对字符串进行 sha1 加密,输出经过 base32 编码的字符串
dongle.Encrypt.FromString("hello world").BySha1().ToBase32String() // FKXGYNOJJ7H3IFO35FPUBC445EPOQRXN
// 对字符串进行 sha1 加密,输出经过 base64 编码的字符串
dongle.Encrypt.FromString("hello world").BySha1().ToBase64String() // Kq5sNclPz7QV2+lfQIuc6R7oRu0=

// 对字节切片进行 sha1 加密,输出经过 hex 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).BySha1().ToHexBytes() // []byte("2aae6c35c94fcfb415dbe95f408b9ce91ee846ed")
// 对字节切片进行 sha1 加密,输出经过 base32 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).BySha1().ToBase32Bytes() // []byte("FKXGYNOJJ7H3IFO35FPUBC445EPOQRXN")
// 对字节切片进行 sha1 加密,输出经过 base64 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).BySha1().ToBase64Bytes() // []byte("Kq5sNclPz7QV2+lfQIuc6R7oRu0=")

Hmac-sha1 加密

// 对字符串进行 hmac-sha1 加密,输出经过 hex 编码的字符串
dongle.Encrypt.FromString("hello world").ByHmacSha1("dongle").ToHexString() // 91c103ef93ba7420902b0d1bf0903251c94b4a62
// 对字符串进行 hmac-sha1 加密,输出经过 base22 编码的字符串
dongle.Encrypt.FromString("hello world").ByHmacSha1("dongle").ToBase32String() // SHAQH34TXJ2CBEBLBUN7BEBSKHEUWSTC
// 对字符串进行 hmac-sha1 加密,输出经过 base64 编码的字符串
dongle.Encrypt.FromString("hello world").ByHmacSha1("dongle").ToBase64String() // kcED75O6dCCQKw0b8JAyUclLSmI=

// 对字节切片进行 hmac-sha1 加密,输出经过 hex 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByHmacSha1([]byte("dongle")).ToHexBytes() // []byte("91c103ef93ba7420902b0d1bf0903251c94b4a62")
// 对字节切片进行 hmac-sha1 加密,输出经过 base22 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByHmacSha1([]byte("dongle")).ToBase32Bytes() // []byte("SHAQH34TXJ2CBEBLBUN7BEBSKHEUWSTC")
// 对字节切片进行 hmac-sha1 加密,输出经过 base64 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByHmacSha1([]byte("dongle")).ToBase64Bytes() // []byte("kcED75O6dCCQKw0b8JAyUclLSmI=")

Rc4 加密

// 对字符串进行 rc4 加密,输出经过 hex 编码的字符串
dongle.Encrypt.FromString("hello world").ByRc4("dongle").ToHexString() // eba154b4cb5a9038dbbf9d
// 对字符串进行 rc4 加密,输出经过 base32 编码的字符串
dongle.Encrypt.FromString("hello world").ByRc4("dongle").ToBase32String() // 5OQVJNGLLKIDRW57TU======
// 对字符串进行 rc4 加密,输出经过 base64 编码的字符串
dongle.Encrypt.FromString("hello world").ByRc4("dongle").ToBase64String() // 66FUtMtakDjbv50=

// 对字节切片进行 rc4 加密,输出经过 hex 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByRc4("dongle").ToHexBytes() // []byte("eba154b4cb5a9038dbbf9d")
// 对字节切片进行 rc4 加密,输出经过 base32 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByRc4("dongle").ToBase32Bytes() // []byte("5OQVJNGLLKIDRW57TU======")
// 对字节切片进行 rc4 加密,输出经过 base64 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByRc4("dongle").ToBase64Bytes() // []byte("66FUtMtakDjbv50=")

Aes 加密、解密

cipher := NewCipher()
cipher.SetMode(dongle.CBC) // CBC、ECB、CFB、OFB、CTR、GCM
cipher.SetPadding(dongle.PKCS7) // No、Zero、PKCS5、PKCS7
cipher.SetKey("1234567887654321") // key 长度必须是 16、24 或 32
cipher.SetIV("1234567887654321") // iv 长度必须是 16、24 或 32

// 对字符串进行 aes 加密,输出经过 hex 编码的字符串
dongle.Encrypt.FromString("hello world").ByAes(cipher).ToHexString() // 65d823bdf1c581a1ded1cba42e03ca52
// 对经过 hex 编码的字符串进行 aes 解密,输出字符串
dongle.Decrypt.FromHexString("65d823bdf1c581a1ded1cba42e03ca52").ByAes(cipher).ToString() // hello world

// 对字符串进行 aes 加密,输出经过 base32 编码的字符串
dongle.Encrypt.FromString("hello world").ByAes(cipher).ToBase32String() // MXMCHPPRYWA2DXWRZOSC4A6KKI======
// 对经过 base32 编码的字符串进行 aes 解密,输出字符串
dongle.Decrypt.FromBase32String("MXMCHPPRYWA2DXWRZOSC4A6KKI======").ByAes(cipher).ToString() // hello world

// 对字符串进行 aes 加密,输出经过 base64 编码的字符串
dongle.Encrypt.FromString("hello world").ByAes(cipher).ToBase64String() // ZdgjvfHFgaHe0cukLgPKUg==
// 对经过 base64 编码的字符串进行 aes 解密,输出字符串
dongle.Decrypt.FromBase64String("ZdgjvfHFgaHe0cukLgPKUg==").ByAes(cipher).ToString() // hello world

// 对字节切片进行 aes 加密,输出经过 hex 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByAes(cipher).ToHexBytes() // []byte("65d823bdf1c581a1ded1cba42e03ca52")
// 对经过 hex 编码的字符串进行 aes 解密,输出字符串
dongle.Decrypt.FromHexBytes([]byte("65d823bdf1c581a1ded1cba42e03ca52")).ByAes(cipher).ToBytes() // []byte("hello world")

// 对字节切片进行 aes 加密,输出经过 base32 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByAes(cipher).ToBase32Bytes() // []byte("MXMCHPPRYWA2DXWRZOSC4A6KKI======")
// 对经过 base32 编码的字节切片进行 aes 解密,输出字节切片
dongle.Decrypt.FromBase32Bytes([]byte("MXMCHPPRYWA2DXWRZOSC4A6KKI======")).ByAes(cipher).ToBytes() // []byte("hello world")

// 对字节切片进行 aes 加密,输出经过 base64 编码的字节切片
dongle.Encrypt.FromBytes([]byte("hello world")).ByAes(cipher).ToBase64Bytes() // []byte("ZdgjvfHFgaHe0cukLgPKUg==")
// 对经过 base64 编码的字节切片进行 aes 解密,输出字节切片
dongle.Decrypt.FromBase64Bytes(()byte("ZdgjvfHFgaHe0cukLgPKUg==")).ByAes(cipher).ToBytes() // []byte("hello world")

错误处理

如果有多个错误发生,只返回第一个错误,前一个错误排除后才返回下一个错误

e := dongle.Encrypy.FromFile("./demo.txt").ByMd5()
if e.Error != nil {
    // 错误处理...
    log.Fatal(e.Error)
}
fmt.Println(e.ToString())
// 输出
invalid file "./demo.txt", please make sure the file exists

更多用法请查看下方软件文档

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(10) 发布并加入讨论🔥
发表了资讯
2023/02/06 09:46

go-dongle 0.2.8 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 openssl 包头添加注释 新增 openssl.RSA.FormatPublicKey() 方法, 格式化公钥,添加头尾和换行符 新增 openssl.RSA.FormatPrivateKey() 方法, 格式化私钥,添加头尾和换行符 新增 openssl.RSA.CompressKey() 方法...

0
4
发表了资讯
2023/02/01 10:16

go-dongle 0.2.7 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 新增 dongle.openssl.RSA.GenPKCS1KeyPair() 方法,生成 PKCS#1 格式 RSA 密钥对 新增 dongle.openssl.RSA.GenPKCS8KeyPair() 方法,生成 PKCS#8 格式 RSA 密钥对 新增 dongle.openssl.RSA.VerifyKeyPair() 方法...

0
1
发表了资讯
2023/01/10 09:47

go-dongle 0.2.6 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 增加对 tea 超长文本的加密、解密支持,如果加密明文超过 8 字节,进行空字符串填充分段加密 增加 Empty 空字符串填充模式的支持 更改 github.com/tjfoc/gmsm/sm3 为 github.com/emmansun/gmsm/sm3 将 encrypt ...

0
2
发表了资讯
2023/01/05 09:39

go-dongle 0.2.5 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 增加对 rsa 超长明文的私钥加密、公钥解密支持 将 split() 更名为 bytesSplit() 并从 rsa.go 移动到 dongle/rsa.go 将 invalidRsaHashError 从 errors.go 移动到 dongle/rsa.go 升级 golang.org/x/crypto 版本到...

4
3
发表了资讯
2022/12/30 10:17

go-dongle 0.2.4 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 增加对 base45 编码、解码的支持 增加对 blake2b-256, blake2b-384, blake2b-512 哈希算法的支持 增加对 blake2s-256 哈希算法的支持 增加对超过 117 字节超长明文的 rsa 解密、解密支持 功能清单 Hex 编码、解码...

0
1
发表了资讯
2022/12/28 09:37

go-dongle 0.2.3 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 增加对 shake128 哈希算法的支持 增加对 shake256 哈希算法的支持 功能清单 Hex 编码、解码 Base16 编码、解码 Base32 编码、解码 Base58 编码、解码 Base62 编码、解码 Base64 编码、解码 Base64URL 编码、解码...

2
2
发表了资讯
2022/12/16 09:31

go-dongle 0.2.2 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧,仓库地址: github gitee 更新日志 增加对 md2 哈希算法的支持 增加对 blowfish 加密、解密的支持 增加对 AnsiX923 and ISO97971 填充模式的支持 将 encode.go 重命名为 encoder.go, decode.go 重命名为 decoder.go, encrypt.go 重命名为 encrypter.go, sign.go 重命名为 signer.go, ver...

0
6
发表了资讯
2022/12/12 09:56

go-dongle 0.2.1 版本发布,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 增加对 md2 哈希算法的支持 增加对 hmac-md2 摘要算法的支持 增加对 ed25519 签名和验签的支持 优化对密文长度错误的处理,修复 github issue#10 优化 verify.go 文件 ToBool() 方法判断逻辑 将 newEncoder() 重...

11
2
发表了资讯
2022/12/07 10:05

go-dongle 0.2.0 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 encode 结构体更名为 encoder decode 结构体更名为 decoder encrypt 结构体更名为 encrypter, 新增 ToRawString() 和 ToRawBytes()方法,输出未经编码的原始字符串和字节切片 decrypt 结构体更名为 decrypter, 新...

0
4
发表了资讯
2022/12/02 09:56

go-dongle 0.1.5 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 增加对 ripemd160 加密支持 增加对 hmac-ripemd160 加密支持 增加对 morse(摩斯码) 编码、解码支持 精简代码,减少文件数量 错误提示信息独立到单独文件 errors.go 修复已知 bug 功能清单 Hex 编码、解码 Base16...

1
6
发表了资讯
2022/11/30 09:27

go-dongle 0.1.4 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 增加对 tea 加密、解密的支持 增加对 bcrypt 签名、验签的支持 增加 cipherMode、cipherPadding 和 pkcsVersion 类型别名 修复已知 bug 将单元测试覆盖率提升到 100% 功能清单 Hex 编码、解码 Base16 编码、解码...

4
7
发表了资讯
2022/11/23 10:48

go-dongle 0.1.3 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 新增对 base62 编码、解码支持 新增对 base91 编码、解码支持 新增对 base100 编码、解码支持 新增对 sm3 加密支持 修复文档部分描述错误 功能清单 Hex 编码、解码 Base16 编码、解码 Base32 编码、解码 Base58...

1
6
发表了资讯
2022/11/21 09:33

go-dongle 0.1.2 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 新增对 base85 编码、解码支持 新增对 ecb 分组模式支持 新增对 rsa 加密、解密支持 优化代码,修复已知 bug 功能清单 Hex 编码、解码 Base16 编码、解码 Base32 编码、解码 Base58 编码、解码 Base62 编码、解码...

2
8
发表了资讯
2022/05/30 09:16

go-dongle 0.1.1 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 新增对 base58 编码、解码支持 新增对 des 加密、解密支持 新增对 3des 加密、解密支持 统一单元测试格式...

3
5
发表了资讯
2022/05/25 11:19

go-dongle 0.1.0 版本发布了,一个轻量级、语义化的 golang 编码解码、加密解密库

dongle 是一个轻量级、语义化、对开发者友好的 Golang 编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/golang-module/dongle 更新日志 Hex 编码、解码 Base32 编码、解码 Base64 编码、解码 Base64URL 编码、解码 SafeURL 编码、解码 Md4 加密 Hmac-md4 加密 Md5 加密 Hmac-md5 加密 Sha1 加密 Hmac-sha1 加密 Sha224 加密 Hmac-sha224 加密 Sha2...

3
18
发表了资讯
2021/08/24 14:59

go-dongle 0.0.2 版本发布了,新增 base58 编码解码和 aes 解密解密支持

dongle 是一个轻量级、语义化、对开发者友好的Golang编码解码和加密解密库 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/go-package/dongle 更新日志 新增base58编码、解密支持 新增aes加密、解密支持,目前仅支持CBC分组模式,ZeroPadding、PKCS5Padding和PKCS7Padding填充模式...

3
4
发表了资讯
2021/08/13 15:04

go-dongle 0.0.1 版本发布了,支持常规编码解码以及加密解密方法

dongle 是一个轻量级、语义化、对开发者友好的Golang编码解码和加密解密库 如果您觉得不错,请给个 star 吧 github.com/golang-module/dongle gitee.com/go-package/dongle 安装使用 // 使用 github 库 go get -u github.com/golang-module/dongle import ( "github.com/golang-module/dongle" ) // 使用 gitee 库 go get -u gitee.com/go-package/dongle import ( "gitee.com/go-package/dongle" ) 编...

3
12
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
10 评论
24 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部