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