diff --git a/docs/api/packages/cryptor.md b/docs/api/packages/cryptor.md index 617c839..3578f4a 100644 --- a/docs/api/packages/cryptor.md +++ b/docs/api/packages/cryptor.md @@ -1,6 +1,6 @@ # Cryptor -cryptor包包含数据加密和解密功能。支持 base64, md5, hmac, hash, aes, des, rsa。 +cryptor 包包含数据加密和解密功能。支持 base64, md5, hmac, hash, aes, des, rsa。
@@ -65,6 +65,9 @@ import ( - [GenerateRsaKey](#GenerateRsaKey) - [RsaEncrypt](#RsaEncrypt) - [RsaDecrypt](#RsaDecrypt) +- [GenerateRsaKeyPair](#GenerateRsaKeyPair) +- [RsaEncryptOAEP](#RsaEncryptOAEP) +- [RsaDecryptOAEP](#RsaDecryptOAEP) @@ -988,13 +991,13 @@ import ( func main() { str := "hello" - key := "12345" + key := "12345" - hms := cryptor.HmacSha512WithBase64(str, key) - fmt.Println(hms) + hms := cryptor.HmacSha512WithBase64(str, key) + fmt.Println(hms) - // Output: - // 3Y8SkKndI9NU4lJtmi6c6M///dN8syCADRxsE9Lvw2Mog3ahlsVFja9T+OGqa0Wm2FYwPVwKIGS/+XhYYdSM/A== + // Output: + // 3Y8SkKndI9NU4lJtmi6c6M///dN8syCADRxsE9Lvw2Mog3ahlsVFja9T+OGqa0Wm2FYwPVwKIGS/+XhYYdSM/A== } ``` @@ -1051,10 +1054,10 @@ import ( func main() { md5Str := cryptor.Md5StringWithBase64("hello") - fmt.Println(md5Str) + fmt.Println(md5Str) - // Output: - // XUFAKrxLKna5cZ2REBfFkg== + // Output: + // XUFAKrxLKna5cZ2REBfFkg== } ``` @@ -1080,10 +1083,10 @@ import ( func main() { md5Str := cryptor.Md5Byte([]byte{'a'}) - fmt.Println(md5Str) + fmt.Println(md5Str) - // Output: - // 0cc175b9c0f1b6a831c399e269772661 + // Output: + // 0cc175b9c0f1b6a831c399e269772661 } ``` @@ -1109,10 +1112,10 @@ import ( func main() { md5Str := cryptor.Md5ByteWithBase64([]byte("hello")) - fmt.Println(md5Str) + fmt.Println(md5Str) - // Output: - // XUFAKrxLKna5cZ2REBfFkg== + // Output: + // XUFAKrxLKna5cZ2REBfFkg== } ``` @@ -1195,10 +1198,10 @@ import ( func main() { result := cryptor.Sha1WithBase64("hello") - fmt.Println(result) + fmt.Println(result) - // Output: - // qvTGHdzF6KLavt4PO0gs2a6pQ00= + // Output: + // qvTGHdzF6KLavt4PO0gs2a6pQ00= } ``` @@ -1255,10 +1258,10 @@ import ( func main() { result := cryptor.Sha256WithBase64("hello") - fmt.Println(result) + fmt.Println(result) - // Output: - // LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ= + // Output: + // LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ= } ``` @@ -1315,10 +1318,10 @@ import ( func main() { result := cryptor.Sha512WithBase64("hello") - fmt.Println(result) + fmt.Println(result) - // Output: - // m3HSJL1i83hdltRq0+o9czGb+8KJDKra4t/3JRlnPKcjI8PZm6XBHXx6zG4UuMXaDEZjR1wuXDre9G9zvN7AQw== + // Output: + // m3HSJL1i83hdltRq0+o9czGb+8KJDKra4t/3JRlnPKcjI8PZm6XBHXx6zG4UuMXaDEZjR1wuXDre9G9zvN7AQw== } ``` @@ -1423,3 +1426,114 @@ func main() { // hello } ``` + +### GenerateRsaKeyPair + +创建rsa公钥私钥和key。
+ +函数签名: + +```go +func GenerateRsaKeyPair(keySize int) (*rsa.PrivateKey, *rsa.PublicKey) +``` + +示例:> + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/cryptor" +) + +func main() { + pri, pub := cryptor.GenerateRsaKeyPair(1024) +} +``` + +### RsaEncryptOAEP + +rsa OAEP加密。
+ +函数签名: + +```go +func RsaEncryptOAEP(data []byte, label []byte, key rsa.PublicKey) ([]byte, error) +``` + +示例:> + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/cryptor" +) + +func main() { + pri, pub := cryptor.GenerateRsaKeyPair(1024) + + data := []byte("hello world") + label := []byte("123456") + + encrypted, err := cryptor.RsaEncryptOAEP(data, label, *pub) + if err != nil { + return + } + + decrypted, err := cryptor.RsaDecryptOAEP([]byte(encrypted), label, *pri) + if err != nil { + return + } + + fmt.Println(string(decrypted)) + + // Output: + // hello world +} +``` + +### RsaDecryptOAEP + +rsa OAEP解密。
+ +函数签名: + +```go +func RsaDecryptOAEP(ciphertext []byte, label []byte, key rsa.PrivateKey) ([]byte, error) +``` + +示例:> + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/cryptor" +) + +func main() { + pri, pub := cryptor.GenerateRsaKeyPair(1024) + + data := []byte("hello world") + label := []byte("123456") + + encrypted, err := cryptor.RsaEncryptOAEP(data, label, *pub) + if err != nil { + return + } + + decrypted, err := cryptor.RsaDecryptOAEP([]byte(encrypted), label, *pri) + if err != nil { + return + } + + fmt.Println(string(decrypted)) + + // Output: + // hello world +} +``` diff --git a/docs/en/api/packages/cryptor.md b/docs/en/api/packages/cryptor.md index 6833c2e..ef5f870 100644 --- a/docs/en/api/packages/cryptor.md +++ b/docs/en/api/packages/cryptor.md @@ -1,18 +1,18 @@ # Cryptor + Package cryptor contains some functions for data encryption and decryption. Support base64, md5, hmac, aes, des, rsa. ## Source: -- [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/crypto.go](https://github.com/duke-git/lancet/blob/main/cryptor/crypto.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/crypto.go](https://github.com/duke-git/lancet/blob/main/cryptor/crypto.go) ## Usage: + ```go import ( "github.com/duke-git/lancet/v2/cryptor" @@ -23,49 +23,48 @@ import ( ## Index -- [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) -- [HmacMd5WithBase64](#HmacMd5WithBase64) -- [HmacSha1](#HmacSha1) -- [HmacSha1WithBase64](#HmacSha1WithBase64) -- [HmacSha256](#HmacSha256) -- [HmacSha256WithBase64](#HmacSha256WithBase64) -- [HmacSha512](#HmacSha512) -- [HmacSha512WithBase64](#HmacSha512WithBase64) -- [Md5String](#Md5String) -- [Md5StringWithBase64](#Md5StringWithBase64) -- [Md5Byte](#Md5Byte) -- [Md5ByteWithBase64](#Md5ByteWithBase64) -- [Md5File](#Md5File) -- [Sha1](#Sha1) -- [Sha1WithBase64](#Sha1WithBase64) -- [Sha256](#Sha256) -- [Sha256WithBase64](#Sha256WithBase64) -- [Sha512](#Sha512) -- [Sha512WithBase64](#Sha512WithBase64) -- [GenerateRsaKey](#GenerateRsaKey) -- [RsaEncrypt](#RsaEncrypt) -- [RsaDecrypt](#RsaDecrypt) - +- [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) +- [HmacMd5WithBase64](#HmacMd5WithBase64) +- [HmacSha1](#HmacSha1) +- [HmacSha1WithBase64](#HmacSha1WithBase64) +- [HmacSha256](#HmacSha256) +- [HmacSha256WithBase64](#HmacSha256WithBase64) +- [HmacSha512](#HmacSha512) +- [HmacSha512WithBase64](#HmacSha512WithBase64) +- [Md5String](#Md5String) +- [Md5StringWithBase64](#Md5StringWithBase64) +- [Md5Byte](#Md5Byte) +- [Md5ByteWithBase64](#Md5ByteWithBase64) +- [Md5File](#Md5File) +- [Sha1](#Sha1) +- [Sha1WithBase64](#Sha1WithBase64) +- [Sha256](#Sha256) +- [Sha256WithBase64](#Sha256WithBase64) +- [Sha512](#Sha512) +- [Sha512WithBase64](#Sha512WithBase64) +- [GenerateRsaKey](#GenerateRsaKey) +- [RsaEncrypt](#RsaEncrypt) +- [RsaDecrypt](#RsaDecrypt) @@ -80,6 +79,7 @@ import ( ```go func AesEcbEncrypt(data, key []byte) []byte ``` + Example:[Run](https://go.dev/play/p/zI6xsmuQRbn) ```go @@ -113,6 +113,7 @@ func main() { ```go func AesEcbDecrypt(encrypted, key []byte) []byte ``` + Example:[Run](https://go.dev/play/p/zI6xsmuQRbn) ```go @@ -146,6 +147,7 @@ func main() { ```go func AesCbcEncrypt(data, key []byte) []byte ``` + Example:[Run](https://go.dev/play/p/IOq_g8_lKZD) ```go @@ -339,6 +341,7 @@ func main() { // hello } ``` + ### AesOfbDecryptDecrypt data with key use AES OFB algorithm. Length of `key` param should be 16, 24 or 32.
@@ -382,6 +385,7 @@ func main() { ```go func Base64StdEncode(s string) string ``` + Example:[Run](https://go.dev/play/p/VOaUyQUreoK) ```go @@ -400,6 +404,7 @@ func main() { // aGVsbG8= } ``` + ### Base64StdDecodeDecode a base64 encoded string.
@@ -463,6 +468,7 @@ func main() { // hello } ``` + ### DesEcbDecryptDecrypt data with key use DES ECB algorithm. Length of `key` param should be 8.
@@ -565,6 +571,7 @@ func main() { // hello } ``` + ### DesCtrCryptEncrypt or decrypt data with key use DES CTR algorithm. Length of `key` param should be 8.
@@ -632,6 +639,7 @@ func main() { // hello } ``` + ### DesCfbDecryptDecrypt data with key use DES CBC algorithm. Length of `key` param should be 8.
@@ -665,6 +673,7 @@ func main() { // hello } ``` + ### DesOfbEncryptEnecrypt data with key use DES OFB algorithm. Length of `key` param should be 8.
@@ -698,6 +707,7 @@ func main() { // hello } ``` + ### DesOfbDecryptDecrypt data with key use DES OFB algorithm. Length of `key` param should be 8.
@@ -988,7 +998,6 @@ func main() { } ``` - ### Md5StringGet the md5 value of string.
@@ -1366,11 +1375,11 @@ func main() { if err != nil { return } - + data := []byte("hello") encrypted := cryptor.RsaEncrypt(data, "rsa_public.pem") decrypted := cryptor.RsaDecrypt(encrypted, "rsa_private.pem") - + fmt.Println(string(decrypted)) // Output: @@ -1378,7 +1387,6 @@ func main() { } ``` - ### RsaDecryptDecrypt data with private key file useing ras algorithm.
@@ -1404,11 +1412,11 @@ func main() { if err != nil { return } - + data := []byte("hello") encrypted := cryptor.RsaEncrypt(data, "rsa_public.pem") decrypted := cryptor.RsaDecrypt(encrypted, "rsa_private.pem") - + fmt.Println(string(decrypted)) // Output: @@ -1416,5 +1424,113 @@ func main() { } ``` +### GenerateRsaKeyPair +Creates rsa private and public key.
+Signature: + +```go +func GenerateRsaKeyPair(keySize int) (*rsa.PrivateKey, *rsa.PublicKey) +``` + +Example:> + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/cryptor" +) + +func main() { + pri, pub := cryptor.GenerateRsaKeyPair(1024) +} +``` + +### RsaEncryptOAEP + +Encrypts the given data with RSA-OAEP.
+ +Signature: + +```go +func RsaEncryptOAEP(data []byte, label []byte, key rsa.PublicKey) ([]byte, error) +``` + +Example:> + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/cryptor" +) + +func main() { + pri, pub := cryptor.GenerateRsaKeyPair(1024) + + data := []byte("hello world") + label := []byte("123456") + + encrypted, err := cryptor.RsaEncryptOAEP(data, label, *pub) + if err != nil { + return + } + + decrypted, err := cryptor.RsaDecryptOAEP([]byte(encrypted), label, *pri) + if err != nil { + return + } + + fmt.Println(string(decrypted)) + + // Output: + // hello world +} +``` + +### RsaDecryptOAEP + +Decrypts the data with RSA-OAEP.
+ +Signature: + +```go +func RsaDecryptOAEP(ciphertext []byte, label []byte, key rsa.PrivateKey) ([]byte, error) +``` + +Example:> + +```go +package main + +import ( + "fmt" + "github.com/duke-git/lancet/v2/cryptor" +) + +func main() { + pri, pub := cryptor.GenerateRsaKeyPair(1024) + + data := []byte("hello world") + label := []byte("123456") + + encrypted, err := cryptor.RsaEncryptOAEP(data, label, *pub) + if err != nil { + return + } + + decrypted, err := cryptor.RsaDecryptOAEP([]byte(encrypted), label, *pri) + if err != nil { + return + } + + fmt.Println(string(decrypted)) + + // Output: + // hello world +} +```