1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-03-01 00:35:28 +08:00

Compare commits

..

5 Commits

Author SHA1 Message Date
dudaodong a0431d9435 fix: fix TestConcurrentMap_Delete test failed 2023-07-25 10:21:11 +08:00
dudaodong 0456b65cc7 test: add example for cryptor package new functions 2023-07-25 10:18:54 +08:00
dudaodong 989b4dd791 test: add test for cryptor package new functions 2023-07-25 10:06:25 +08:00
dudaodong a76b02fbba Merge branch 'main' into v2 2023-07-24 17:28:41 +08:00
hoslo 2d7747738a feat: add base cryptor method (#119)
Co-authored-by: shuai_yang <shuai_yang@intsig.net>
2023-07-24 17:24:17 +08:00
4 changed files with 225 additions and 6 deletions
+64
View File
@@ -40,6 +40,14 @@ func Md5String(s string) string {
return hex.EncodeToString(h.Sum(nil)) return hex.EncodeToString(h.Sum(nil))
} }
// Md5String return the md5 value of string.
// Play: https://go.dev/play/p/Lx4gH7Vdr5_y
func Md5StringWithBase64(s string) string {
h := md5.New()
h.Write([]byte(s))
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
// Md5Byte return the md5 string of byte slice. // Md5Byte return the md5 string of byte slice.
// Play: https://go.dev/play/p/suraalH8lyC // Play: https://go.dev/play/p/suraalH8lyC
func Md5Byte(data []byte) string { func Md5Byte(data []byte) string {
@@ -48,6 +56,14 @@ func Md5Byte(data []byte) string {
return hex.EncodeToString(h.Sum(nil)) return hex.EncodeToString(h.Sum(nil))
} }
// Md5Byte return the md5 string of byte slice.
// Play: https://go.dev/play/p/CkN9hYKGeAy
func Md5ByteWithBase64(data []byte) string {
h := md5.New()
h.Write(data)
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
// Md5File return the md5 value of file. // Md5File return the md5 value of file.
func Md5File(filename string) (string, error) { func Md5File(filename string) (string, error) {
if fileInfo, err := os.Stat(filename); err != nil { if fileInfo, err := os.Stat(filename); err != nil {
@@ -96,6 +112,14 @@ func HmacSha1(data, key string) string {
return hex.EncodeToString(h.Sum([]byte(""))) return hex.EncodeToString(h.Sum([]byte("")))
} }
// HmacSha1 return the hmac hash of string use sha1.
// Play: https://go.dev/play/p/47JmmGrnF7B
func HmacSha1WithBase64(data, key string) string {
h := hmac.New(sha1.New, []byte(key))
h.Write([]byte(data))
return base64.StdEncoding.EncodeToString(h.Sum([]byte("")))
}
// HmacSha256 return the hmac hash of string use sha256. // HmacSha256 return the hmac hash of string use sha256.
// Play: https://go.dev/play/p/HhpwXxFhhC0 // Play: https://go.dev/play/p/HhpwXxFhhC0
func HmacSha256(data, key string) string { func HmacSha256(data, key string) string {
@@ -104,6 +128,14 @@ func HmacSha256(data, key string) string {
return hex.EncodeToString(h.Sum([]byte(""))) return hex.EncodeToString(h.Sum([]byte("")))
} }
// HmacSha256 return the hmac hash of string use sha256 with base64.
// Play: https://go.dev/play/p/EKbkUvPTLwO
func HmacSha256WithBase64(data, key string) string {
h := hmac.New(sha256.New, []byte(key))
h.Write([]byte(data))
return base64.StdEncoding.EncodeToString(h.Sum([]byte("")))
}
// HmacSha512 return the hmac hash of string use sha512. // HmacSha512 return the hmac hash of string use sha512.
// Play: https://go.dev/play/p/59Od6m4A0Ud // Play: https://go.dev/play/p/59Od6m4A0Ud
func HmacSha512(data, key string) string { func HmacSha512(data, key string) string {
@@ -112,6 +144,14 @@ func HmacSha512(data, key string) string {
return hex.EncodeToString(h.Sum([]byte(""))) return hex.EncodeToString(h.Sum([]byte("")))
} }
// HmacSha512 return the hmac hash of string use sha512 with base64..
// Play: https://go.dev/play/p/61wBBOKO-GH
func HmacSha512WithBase64(data, key string) string {
h := hmac.New(sha512.New, []byte(key))
h.Write([]byte(data))
return base64.StdEncoding.EncodeToString(h.Sum([]byte("")))
}
// Sha1 return the sha1 value (SHA-1 hash algorithm) of string. // Sha1 return the sha1 value (SHA-1 hash algorithm) of string.
// Play: https://go.dev/play/p/_m_uoD1deMT // Play: https://go.dev/play/p/_m_uoD1deMT
func Sha1(data string) string { func Sha1(data string) string {
@@ -120,6 +160,14 @@ func Sha1(data string) string {
return hex.EncodeToString(sha1.Sum([]byte(""))) return hex.EncodeToString(sha1.Sum([]byte("")))
} }
// Sha1 return the sha1 value (SHA-1 hash algorithm) of base64 string.
// Play: todo
func Sha1WithBase64(data string) string {
sha1 := sha1.New()
sha1.Write([]byte(data))
return base64.StdEncoding.EncodeToString(sha1.Sum([]byte("")))
}
// Sha256 return the sha256 value (SHA256 hash algorithm) of string. // Sha256 return the sha256 value (SHA256 hash algorithm) of string.
// Play: https://go.dev/play/p/tU9tfBMIAr1 // Play: https://go.dev/play/p/tU9tfBMIAr1
func Sha256(data string) string { func Sha256(data string) string {
@@ -128,6 +176,14 @@ func Sha256(data string) string {
return hex.EncodeToString(sha256.Sum([]byte(""))) return hex.EncodeToString(sha256.Sum([]byte("")))
} }
// Sha256 return the sha256 value (SHA256 hash algorithm) of base64 string.
// Play: https://go.dev/play/p/85IXJHIal1k
func Sha256WithBase64(data string) string {
sha256 := sha256.New()
sha256.Write([]byte(data))
return base64.StdEncoding.EncodeToString(sha256.Sum([]byte("")))
}
// Sha512 return the sha512 value (SHA512 hash algorithm) of string. // Sha512 return the sha512 value (SHA512 hash algorithm) of string.
// Play: https://go.dev/play/p/3WsvLYZxsHa // Play: https://go.dev/play/p/3WsvLYZxsHa
func Sha512(data string) string { func Sha512(data string) string {
@@ -135,3 +191,11 @@ func Sha512(data string) string {
sha512.Write([]byte(data)) sha512.Write([]byte(data))
return hex.EncodeToString(sha512.Sum([]byte(""))) return hex.EncodeToString(sha512.Sum([]byte("")))
} }
// Sha512 return the sha512 value (SHA512 hash algorithm) of base64 string.
// Play: https://go.dev/play/p/q_fY2rA-k5I
func Sha512WithBase64(data string) string {
sha512 := sha512.New()
sha512.Write([]byte(data))
return base64.StdEncoding.EncodeToString(sha512.Sum([]byte("")))
}
+82 -2
View File
@@ -27,6 +27,13 @@ func TestMd5String(t *testing.T) {
assert.Equal("5d41402abc4b2a76b9719d911017c592", Md5String("hello")) assert.Equal("5d41402abc4b2a76b9719d911017c592", Md5String("hello"))
} }
func TestMd5StringWithBase64(t *testing.T) {
t.Parallel()
assert := internal.NewAssert(t, "TestMd5StringWithBase64")
assert.Equal("XUFAKrxLKna5cZ2REBfFkg==", Md5StringWithBase64("hello"))
}
func TestMd5Byte(t *testing.T) { func TestMd5Byte(t *testing.T) {
t.Parallel() t.Parallel()
@@ -35,6 +42,13 @@ func TestMd5Byte(t *testing.T) {
assert.Equal("0cc175b9c0f1b6a831c399e269772661", Md5Byte(data)) assert.Equal("0cc175b9c0f1b6a831c399e269772661", Md5Byte(data))
} }
func TestMd5ByteWithBase64(t *testing.T) {
t.Parallel()
assert := internal.NewAssert(t, "TestMd5ByteWithBase64")
assert.Equal("XUFAKrxLKna5cZ2REBfFkg==", Md5ByteWithBase64([]byte("hello")))
}
func TestMd5File(t *testing.T) { func TestMd5File(t *testing.T) {
t.Parallel() t.Parallel()
@@ -63,18 +77,42 @@ func TestHmacSha1(t *testing.T) {
assert.Equal(expected, hmacSha1) assert.Equal(expected, hmacSha1)
} }
func TestHmacSha1WithBase64(t *testing.T) {
t.Parallel()
s := "hello"
key := "12345"
hmacSha1 := HmacSha1WithBase64(s, key)
expected := "XGqdsMzLkuNu0DI/0Jt/k23prOA="
assert := internal.NewAssert(t, "TestHmacSha1")
assert.Equal(expected, hmacSha1)
}
func TestHmacSha256(t *testing.T) { func TestHmacSha256(t *testing.T) {
t.Parallel() t.Parallel()
s := "hello world" str := "hello world"
key := "12345" key := "12345"
hmacSha256 := HmacSha256(s, key) hmacSha256 := HmacSha256(str, key)
expected := "9dce2609f2d67d41f74c7f9efc8ccd44370d41ad2de52982627588dfe7289ab8" expected := "9dce2609f2d67d41f74c7f9efc8ccd44370d41ad2de52982627588dfe7289ab8"
assert := internal.NewAssert(t, "TestHmacSha256") assert := internal.NewAssert(t, "TestHmacSha256")
assert.Equal(expected, hmacSha256) assert.Equal(expected, hmacSha256)
} }
func TestHmacSha256WithBase64(t *testing.T) {
t.Parallel()
str := "hello"
key := "12345"
hms := HmacSha256WithBase64(str, key)
expected := "MVu5PE6YmGK6Ccti4F1zpfN2yzbw14btqwwyDQWf3nU="
assert := internal.NewAssert(t, "TestHmacSha256WithBase64")
assert.Equal(expected, hms)
}
func TestHmacSha512(t *testing.T) { func TestHmacSha512(t *testing.T) {
t.Parallel() t.Parallel()
@@ -87,6 +125,18 @@ func TestHmacSha512(t *testing.T) {
assert.Equal(expected, hmacSha512) assert.Equal(expected, hmacSha512)
} }
func TestHmacSha512WithBase64(t *testing.T) {
t.Parallel()
str := "hello"
key := "12345"
hms := HmacSha512WithBase64(str, key)
expected := "3Y8SkKndI9NU4lJtmi6c6M///dN8syCADRxsE9Lvw2Mog3ahlsVFja9T+OGqa0Wm2FYwPVwKIGS/+XhYYdSM/A=="
assert := internal.NewAssert(t, "TestHmacSha512WithBase64")
assert.Equal(expected, hms)
}
func TestSha1(t *testing.T) { func TestSha1(t *testing.T) {
t.Parallel() t.Parallel()
@@ -98,6 +148,16 @@ func TestSha1(t *testing.T) {
assert.Equal(expected, sha1) assert.Equal(expected, sha1)
} }
func TestSha1WithBase64(t *testing.T) {
t.Parallel()
str := Sha1WithBase64("hello")
expected := "qvTGHdzF6KLavt4PO0gs2a6pQ00="
assert := internal.NewAssert(t, "TestSha1WithBase64")
assert.Equal(expected, str)
}
func TestSha256(t *testing.T) { func TestSha256(t *testing.T) {
t.Parallel() t.Parallel()
@@ -109,6 +169,16 @@ func TestSha256(t *testing.T) {
assert.Equal(expected, sha256) assert.Equal(expected, sha256)
} }
func TestSha256WithBase64(t *testing.T) {
t.Parallel()
str := Sha256WithBase64("hello")
expected := "LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ="
assert := internal.NewAssert(t, "TestSha256WithBase64")
assert.Equal(expected, str)
}
func TestSha512(t *testing.T) { func TestSha512(t *testing.T) {
t.Parallel() t.Parallel()
@@ -119,3 +189,13 @@ func TestSha512(t *testing.T) {
assert := internal.NewAssert(t, "TestSha512") assert := internal.NewAssert(t, "TestSha512")
assert.Equal(expected, sha512) assert.Equal(expected, sha512)
} }
func TestSha512WithBase64(t *testing.T) {
t.Parallel()
str := Sha512WithBase64("hello")
expected := "m3HSJL1i83hdltRq0+o9czGb+8KJDKra4t/3JRlnPKcjI8PZm6XBHXx6zG4UuMXaDEZjR1wuXDre9G9zvN7AQw=="
assert := internal.NewAssert(t, "TestSha512WithBase64")
assert.Equal(expected, str)
}
+74 -4
View File
@@ -322,7 +322,6 @@ func ExampleHmacMd5() {
key := "12345" key := "12345"
hms := HmacMd5(str, key) hms := HmacMd5(str, key)
fmt.Println(hms) fmt.Println(hms)
// Output: // Output:
@@ -334,37 +333,67 @@ func ExampleHmacSha1() {
key := "12345" key := "12345"
hms := HmacSha1(str, key) hms := HmacSha1(str, key)
fmt.Println(hms) fmt.Println(hms)
// Output: // Output:
// 5c6a9db0cccb92e36ed0323fd09b7f936de9ace0 // 5c6a9db0cccb92e36ed0323fd09b7f936de9ace0
} }
func ExampleHmacSha1WithBase64() {
str := "hello"
key := "12345"
hms := HmacSha1WithBase64(str, key)
fmt.Println(hms)
// Output:
// XGqdsMzLkuNu0DI/0Jt/k23prOA=
}
func ExampleHmacSha256() { func ExampleHmacSha256() {
str := "hello" str := "hello"
key := "12345" key := "12345"
hms := HmacSha256(str, key) hms := HmacSha256(str, key)
fmt.Println(hms) fmt.Println(hms)
// Output: // Output:
// 315bb93c4e989862ba09cb62e05d73a5f376cb36f0d786edab0c320d059fde75 // 315bb93c4e989862ba09cb62e05d73a5f376cb36f0d786edab0c320d059fde75
} }
func ExampleHmacSha256WithBase64() {
str := "hello"
key := "12345"
hms := HmacSha256WithBase64(str, key)
fmt.Println(hms)
// Output:
// MVu5PE6YmGK6Ccti4F1zpfN2yzbw14btqwwyDQWf3nU=
}
func ExampleHmacSha512() { func ExampleHmacSha512() {
str := "hello" str := "hello"
key := "12345" key := "12345"
hms := HmacSha512(str, key) hms := HmacSha512(str, key)
fmt.Println(hms) fmt.Println(hms)
// Output: // Output:
// dd8f1290a9dd23d354e2526d9a2e9ce8cffffdd37cb320800d1c6c13d2efc363288376a196c5458daf53f8e1aa6b45a6d856303d5c0a2064bff9785861d48cfc // dd8f1290a9dd23d354e2526d9a2e9ce8cffffdd37cb320800d1c6c13d2efc363288376a196c5458daf53f8e1aa6b45a6d856303d5c0a2064bff9785861d48cfc
} }
func ExampleHmacSha512WithBase64() {
str := "hello"
key := "12345"
hms := HmacSha512WithBase64(str, key)
fmt.Println(hms)
// Output:
// 3Y8SkKndI9NU4lJtmi6c6M///dN8syCADRxsE9Lvw2Mog3ahlsVFja9T+OGqa0Wm2FYwPVwKIGS/+XhYYdSM/A==
}
func ExampleMd5String() { func ExampleMd5String() {
md5Str := Md5String("hello") md5Str := Md5String("hello")
fmt.Println(md5Str) fmt.Println(md5Str)
@@ -373,6 +402,14 @@ func ExampleMd5String() {
// 5d41402abc4b2a76b9719d911017c592 // 5d41402abc4b2a76b9719d911017c592
} }
func ExampleMd5StringWithBase64() {
md5Str := Md5StringWithBase64("hello")
fmt.Println(md5Str)
// Output:
// XUFAKrxLKna5cZ2REBfFkg==
}
func ExampleMd5Byte() { func ExampleMd5Byte() {
md5Str := Md5Byte([]byte{'a'}) md5Str := Md5Byte([]byte{'a'})
fmt.Println(md5Str) fmt.Println(md5Str)
@@ -380,6 +417,15 @@ func ExampleMd5Byte() {
// Output: // Output:
// 0cc175b9c0f1b6a831c399e269772661 // 0cc175b9c0f1b6a831c399e269772661
} }
func ExampleMd5ByteWithBase64() {
md5Str := Md5ByteWithBase64([]byte("hello"))
fmt.Println(md5Str)
// Output:
// XUFAKrxLKna5cZ2REBfFkg==
}
func ExampleSha1() { func ExampleSha1() {
result := Sha1("hello") result := Sha1("hello")
fmt.Println(result) fmt.Println(result)
@@ -388,6 +434,14 @@ func ExampleSha1() {
// aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d // aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
} }
func ExampleSha1WithBase64() {
result := Sha1WithBase64("hello")
fmt.Println(result)
// Output:
// qvTGHdzF6KLavt4PO0gs2a6pQ00=
}
func ExampleSha256() { func ExampleSha256() {
result := Sha256("hello") result := Sha256("hello")
fmt.Println(result) fmt.Println(result)
@@ -396,6 +450,14 @@ func ExampleSha256() {
// 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 // 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
} }
func ExampleSha256WithBase64() {
result := Sha256WithBase64("hello")
fmt.Println(result)
// Output:
// LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=
}
func ExampleSha512() { func ExampleSha512() {
result := Sha512("hello") result := Sha512("hello")
fmt.Println(result) fmt.Println(result)
@@ -403,3 +465,11 @@ func ExampleSha512() {
// Output: // Output:
// 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043 // 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043
} }
func ExampleSha512WithBase64() {
result := Sha512WithBase64("hello")
fmt.Println(result)
// Output:
// m3HSJL1i83hdltRq0+o9czGb+8KJDKra4t/3JRlnPKcjI8PZm6XBHXx6zG4UuMXaDEZjR1wuXDre9G9zvN7AQw==
}
+5
View File
@@ -42,13 +42,18 @@ func TestConcurrentMap_GetOrSet(t *testing.T) {
cm := NewConcurrentMap[string, int](100) cm := NewConcurrentMap[string, int](100)
var wg sync.WaitGroup
wg.Add(5)
for i := 0; i < 5; i++ { for i := 0; i < 5; i++ {
go func(n int) { go func(n int) {
val, ok := cm.GetOrSet(fmt.Sprintf("%d", n), n) val, ok := cm.GetOrSet(fmt.Sprintf("%d", n), n)
assert.Equal(n, val) assert.Equal(n, val)
assert.Equal(false, ok) assert.Equal(false, ok)
wg.Done()
}(i) }(i)
} }
wg.Wait()
for j := 0; j < 5; j++ { for j := 0; j < 5; j++ {
go func(n int) { go func(n int) {