# Cryptor
cryptor 加密包支持数据加密和解密,获取 md5,hash 值。支持 base64, md5, hmac, aes, des, rsa。
# 源码:
- https://github.com/duke-git/lancet/blob/main/cryptor/aes.go (opens new window)
- https://github.com/duke-git/lancet/blob/main/cryptor/des.go (opens new window)
- https://github.com/duke-git/lancet/blob/main/cryptor/basic.go (opens new window)
- https://github.com/duke-git/lancet/blob/main/cryptor/rsa.go (opens new window)
# 用法:
import (
"github.com/duke-git/lancet/v2/cryptor"
)
# 文档
# AesEcbEncrypt
使用AES ECB算法模式加密数据. 参数`key`的长度是16, 24 or 32。
函数签名:
func AesEcbEncrypt(data, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefghijklmnop"
encrypted := cryptor.AesEcbEncrypt([]byte(data), []byte(key))
fmt.Println(string(encrypted))
}
# AesEcbDecrypt
使用AES ECB算法模式解密数据. 参数`key`的长度是16, 24 or 32。
函数签名:
func AesEcbDecrypt(encrypted, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefghijklmnop"
encrypted := cryptor.AesEcbEncrypt([]byte(data), []byte(key))
decrypted := cryptor.AesEcbDecrypt(encrypted, []byte(key))
fmt.Println(string(decrypted)) //hello world
}
# AesCbcEncrypt
使用AES CBC算法模式加密数据. 参数`key`的长度是16, 24 or 32。
函数签名:
func AesCbcEncrypt(data, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefghijklmnop"
encrypted := cryptor.AesCbcEncrypt([]byte(data), []byte(key))
fmt.Println(string(encrypted))
}
# AesCbcDecrypt
使用AES CBC算法模式解密数据. 参数`key`的长度是16, 24 or 32。
函数签名:
func AesCbcDecrypt(encrypted, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefghijklmnop"
encrypted := cryptor.AesCbcEncrypt([]byte(data), []byte(key))
decrypted := cryptor.AesCbcDecrypt(encrypted, []byte(key))
fmt.Println(string(decrypted)) //hello world
}
# AesCtrCrypt
使用AES CTR算法模式加密/解密数据. 参数`key`的长度是16, 24 or 32。
函数签名:
func AesCtrCrypt(data, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefghijklmnop"
encrypted := cryptor.AesCtrCrypt([]byte(data), []byte(key))
decrypted := cryptor.AesCtrCrypt(encrypted, []byte(key))
fmt.Println(string(decrypted)) //hello world
}
# AesCfbEncrypt
使用AES CFB算法模式加密数据. 参数`key`的长度是16, 24 or 32。
函数签名:
func AesCfbEncrypt(data, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefghijklmnop"
encrypted := cryptor.AesCfbEncrypt([]byte(data), []byte(key))
fmt.Println(string(encrypted))
}
# AesCfbDecrypt
使用AES CFB算法模式解密数据. 参数`key`的长度是16, 24 or 32。
函数签名:
func AesCfbDecrypt(encrypted, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefghijklmnop"
encrypted := cryptor.AesCfbEncrypt([]byte(data), []byte(key))
decrypted := cryptor.AesCfbDecrypt(encrypted, []byte(key))
fmt.Println(string(decrypted)) //hello world
}
# AesOfbEncrypt
使用AES OFB算法模式加密数据. 参数`key`的长度是16, 24 or 32
函数签名:
func AesOfbEncrypt(data, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefghijklmnop"
encrypted := cryptor.AesOfbEncrypt([]byte(data), []byte(key))
fmt.Println(string(encrypted))
}
# AesOfbDecrypt
使用AES OFB算法模式解密数据. 参数`key`的长度是16, 24 or 32
函数签名:
func AesOfbDecrypt(encrypted, key []byte) []byte
Example:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefghijklmnop"
encrypted := cryptor.AesOfbEncrypt([]byte(data), []byte(key))
decrypted := cryptor.AesOfbDecrypt(encrypted, []byte(key))
fmt.Println(string(decrypted)) //hello world
}
# Base64StdEncode
将字符串base64编码
函数签名:
func Base64StdEncode(s string) string
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
base64Str := cryptor.Base64StdEncode("hello world")
fmt.Println(base64Str) //aGVsbG8gd29ybGQ=
}
# Base64StdDecode
解码base64字符串
函数签名:
func Base64StdDecode(s string) string
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
str := cryptor.Base64StdDecode("aGVsbG8gd29ybGQ=")
fmt.Println(str) //hello world
}
# DesEcbEncrypt
使用DES ECB算法模式加密数据. 参数`key`的长度是8
函数签名:
func DesEcbEncrypt(data, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefgh"
encrypted := cryptor.DesEcbEncrypt([]byte(data), []byte(key))
fmt.Println(string(encrypted))
}
# DesEcbDecrypt
使用DES ECB算法模式解密数据. 参数`key`的长度是8
函数签名:
func DesEcbDecrypt(encrypted, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefgh"
encrypted := cryptor.DesEcbEncrypt([]byte(data), []byte(key))
decrypted := cryptor.DesEcbDecrypt(encrypted, []byte(key))
fmt.Println(string(decrypted)) //hello world
}
# DesCbcEncrypt
使用DES CBC算法模式加密数据. 参数`key`的长度是8
函数签名:
func DesCbcEncrypt(data, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefgh"
encrypted := cryptor.DesCbcEncrypt([]byte(data), []byte(key))
fmt.Println(string(encrypted))
}
# DesCbcDecrypt
使用DES CBC算法模式解密数据. 参数`key`的长度是8
函数签名:
func DesCbcDecrypt(encrypted, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefgh"
encrypted := cryptor.DesCbcEncrypt([]byte(data), []byte(key))
decrypted := cryptor.DesCbcDecrypt(encrypted, []byte(key))
fmt.Println(string(decrypted)) //hello world
}
# DesCtrCrypt
使用DES CTR算法模式加密/解密数据. 参数`key`的长度是8
函数签名:
func DesCtrCrypt(data, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefgh"
encrypted := cryptor.DesCtrCrypt([]byte(data), []byte(key))
decrypted := cryptor.DesCtrCrypt(encrypted, []byte(key))
fmt.Println(string(decrypted)) //hello world
}
# DesCfbEncrypt
使用DES CFB算法模式加密数据. 参数`key`的长度是8
函数签名:
func DesCfbEncrypt(data, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefgh"
encrypted := cryptor.DesCfbEncrypt([]byte(data), []byte(key))
fmt.Println(string(encrypted))
}
# DesCfbDecrypt
使用DES CFB算法模式解密数据. 参数`key`的长度是8
函数签名:
func DesCfbDecrypt(encrypted, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefgh"
encrypted := cryptor.DesCfbEncrypt([]byte(data), []byte(key))
decrypted := cryptor.DesCfbDecrypt(encrypted, []byte(key))
fmt.Println(string(decrypted)) //hello world
}
# DesOfbEncrypt
使用DES OFB算法模式加密数据. 参数`key`的长度是8
函数签名:
func DesOfbEncrypt(data, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefgh"
encrypted := cryptor.DesOfbEncrypt([]byte(data), []byte(key))
fmt.Println(string(encrypted))
}
# DesOfbDecrypt
使用DES OFB算法模式解密数据. 参数`key`的长度是8
函数签名:
func DesOfbDecrypt(encrypted, key []byte) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
data := "hello world"
key := "abcdefgh"
encrypted := cryptor.DesOfbEncrypt([]byte(data), []byte(key))
decrypted := cryptor.DesOfbDecrypt(encrypted, []byte(key))
fmt.Println(string(decrypted)) //hello world
}
# HmacMd5
获取字符串md5 hmac值
函数签名:
func HmacMd5(data, key string) string
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
s := cryptor.HmacMd5("hello world", "12345"))
fmt.Println(s) //5f4c9faaff0a1ad3007d9ddc06abe36d
}
# HmacSha1
获取字符串sha1 hmac值
函数签名:
func HmacSha1(data, key string) string
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
s := cryptor.HmacSha1("hello world", "12345"))
fmt.Println(s) //3826f812255d8683f051ee97346d1359234d5dbd
}
# HmacSha256
获取字符串sha256 hmac值
函数签名:
func HmacSha256(data, key string) string
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
s := cryptor.HmacSha256("hello world", "12345"))
fmt.Println(s) //9dce2609f2d67d41f74c7f9efc8ccd44370d41ad2de52982627588dfe7289ab8
}
# HmacSha512
获取字符串sha512 hmac值
函数签名:
func HmacSha512(data, key string) string
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
s := cryptor.HmacSha512("hello world", "12345"))
fmt.Println(s)
//5b1563ac4e9b49c9ada8ccb232588fc4f0c30fd12f756b3a0b95af4985c236ca60925253bae10ce2c6bf9af1c1679b51e5395ff3d2826c0a2c7c0d72225d4175
}
# Md5String
获取字符串md5值
函数签名:
func Md5String(s string) string
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
s := cryptor.Md5String("hello"))
fmt.Println(s) //5d41402abc4b2a76b9719d911017c592
}
# Md5File
获取文件md5值.
函数签名:
func Md5File(filepath string) (string, error)
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
s := cryptor.Md5File("./main.go"))
fmt.Println(s)
}
# Sha1
获取字符串sha1值
函数签名:
func Sha1(data string) string
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
s := cryptor.Sha1("hello world"))
fmt.Println(s) //2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
}
# Sha256
获取字符串sha256值
函数签名:
func Sha256(data string) string
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
s := cryptor.Sha256("hello world"))
fmt.Println(s) //b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}
# Sha512
获取字符串sha512值
函数签名:
func Sha512(data string) string
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
s := cryptor.Sha512("hello world"))
fmt.Println(s) //309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f
}
# GenerateRsaKey
在当前目录下创建rsa私钥文件和公钥文件
函数签名:
func GenerateRsaKey(keySize int, priKeyFile, pubKeyFile string) error
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
err := cryptor.GenerateRsaKey(4096, "rsa_private.pem", "rsa_public.pem")
if err != nil {
fmt.Println(err)
}
}
# RsaEncrypt
用公钥文件ras加密数据
函数签名:
func RsaEncrypt(data []byte, pubKeyFileName string) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
err := cryptor.GenerateRsaKey(4096, "rsa_private.pem", "rsa_public.pem")
if err != nil {
fmt.Println(err)
}
data := []byte("hello world")
encrypted := cryptor.RsaEncrypt(data, "rsa_public.pem")
decrypted := cryptor.RsaDecrypt(encrypted, "rsa_private.pem")
fmt.Println(string(decrypted)) //hello world
}
# RsaDecrypt
用私钥文件rsa解密数据
函数签名:
func RsaDecrypt(data []byte, privateKeyFileName string) []byte
列子:
package main
import (
"fmt"
"github.com/duke-git/lancet/v2/cryptor"
)
func main() {
err := cryptor.GenerateRsaKey(4096, "rsa_private.pem", "rsa_public.pem")
if err != nil {
fmt.Println(err)
}
data := []byte("hello world")
encrypted := cryptor.RsaEncrypt(data, "rsa_public.pem")
decrypted := cryptor.RsaDecrypt(encrypted, "rsa_private.pem")
fmt.Println(string(decrypted)) //hello world
}