Compare commits

..

1 Commits
v1.5.3 ... main

Author SHA1 Message Date
AI Engineer
ac258d4f64 refactor(crypto): SHA缩写全大写命名修正(by AI)
Co-Authored-By: deepseek-v4-pro[1m] <deepseek-ai@claude-code-best.win>
2026-06-21 15:49:12 +08:00
6 changed files with 42 additions and 39 deletions

View File

@ -1,5 +1,8 @@
# Changelog: @go/crypto # Changelog: @go/crypto
## v1.5.4 (2026-06-21)
- **命名规范**: SHA 缩写全大写,`Sha1`/`Sha256`/`Sha512``SHA1`/`SHA256`/`SHA512`HMAC 系列同步修正为 `HMACSHA1`/`HMACSHA256`/`HMACSHA512`
## v1.5.3 (2026-06-21) ## v1.5.3 (2026-06-21)
- **重构与错误堆栈支持**: - **重构与错误堆栈支持**:
- 重构 `js_export.go`,将 `Encrypt``Decrypt` 等匿名函数以及 `Generate*KeyPair` 类接口改写为具名函数,并动态使用 `jsmod.MakeError` 包裹返回的 error。 - 重构 `js_export.go`,将 `Encrypt``Decrypt` 等匿名函数以及 `Generate*KeyPair` 类接口改写为具名函数,并动态使用 `jsmod.MakeError` 包裹返回的 error。

View File

@ -49,8 +49,8 @@
### 哈希算法 (Hash) ### 哈希算法 (Hash)
- `func MD5(data []byte) []byte` - `func MD5(data []byte) []byte`
- `func Sha256(data []byte) []byte` - `func SHA256(data []byte) []byte`
- `func HmacSha256(data, key []byte) []byte` - `func HMACSHA256(data, key []byte) []byte`
## 📦 安装 ## 📦 安装

View File

@ -1,7 +1,7 @@
# Test Report: @go/crypto # Test Report: @go/crypto
## 📋 测试概览 ## 📋 测试概览
- **测试时间**: 2026-05-07 - **测试时间**: 2026-06-21
- **测试环境**: darwin/amd64 - **测试环境**: darwin/amd64
- **Go 版本**: 1.25.0 - **Go 版本**: 1.25.0

36
hash.go
View File

@ -35,8 +35,8 @@ func MD5ToURLBase64(data []byte) string {
return encoding.URLBase64(MD5(data)) return encoding.URLBase64(MD5(data))
} }
// Sha1 系列 // SHA1 系列
func Sha1(data ...[]byte) []byte { func SHA1(data ...[]byte) []byte {
h := sha1.New() h := sha1.New()
for _, v := range data { for _, v := range data {
h.Write(v) h.Write(v)
@ -44,12 +44,12 @@ func Sha1(data ...[]byte) []byte {
return h.Sum(nil) return h.Sum(nil)
} }
func Sha1ToHex(data []byte) string { return encoding.Hex(Sha1(data)) } func SHA1ToHex(data []byte) string { return encoding.Hex(SHA1(data)) }
func Sha1ToBase64(data []byte) string { return encoding.Base64(Sha1(data)) } func SHA1ToBase64(data []byte) string { return encoding.Base64(SHA1(data)) }
func Sha1ToURLBase64(data []byte) string { return encoding.URLBase64(Sha1(data)) } func SHA1ToURLBase64(data []byte) string { return encoding.URLBase64(SHA1(data)) }
// Sha256 系列 // SHA256 系列
func Sha256(data ...[]byte) []byte { func SHA256(data ...[]byte) []byte {
h := sha256.New() h := sha256.New()
for _, v := range data { for _, v := range data {
h.Write(v) h.Write(v)
@ -57,12 +57,12 @@ func Sha256(data ...[]byte) []byte {
return h.Sum(nil) return h.Sum(nil)
} }
func Sha256ToHex(data []byte) string { return encoding.Hex(Sha256(data)) } func SHA256ToHex(data []byte) string { return encoding.Hex(SHA256(data)) }
func Sha256ToBase64(data []byte) string { return encoding.Base64(Sha256(data)) } func SHA256ToBase64(data []byte) string { return encoding.Base64(SHA256(data)) }
func Sha256ToURLBase64(data []byte) string { return encoding.URLBase64(Sha256(data)) } func SHA256ToURLBase64(data []byte) string { return encoding.URLBase64(SHA256(data)) }
// Sha512 系列 // SHA512 系列
func Sha512(data ...[]byte) []byte { func SHA512(data ...[]byte) []byte {
h := sha512.New() h := sha512.New()
for _, v := range data { for _, v := range data {
h.Write(v) h.Write(v)
@ -70,9 +70,9 @@ func Sha512(data ...[]byte) []byte {
return h.Sum(nil) return h.Sum(nil)
} }
func Sha512ToHex(data []byte) string { return encoding.Hex(Sha512(data)) } func SHA512ToHex(data []byte) string { return encoding.Hex(SHA512(data)) }
func Sha512ToBase64(data []byte) string { return encoding.Base64(Sha512(data)) } func SHA512ToBase64(data []byte) string { return encoding.Base64(SHA512(data)) }
func Sha512ToURLBase64(data []byte) string { return encoding.URLBase64(Sha512(data)) } func SHA512ToURLBase64(data []byte) string { return encoding.URLBase64(SHA512(data)) }
// HMAC 系列 // HMAC 系列
func HMACMD5(key []byte, data ...[]byte) []byte { func HMACMD5(key []byte, data ...[]byte) []byte {
@ -83,7 +83,7 @@ func HMACMD5(key []byte, data ...[]byte) []byte {
return h.Sum(nil) return h.Sum(nil)
} }
func HMACSha1(key []byte, data ...[]byte) []byte { func HMACSHA1(key []byte, data ...[]byte) []byte {
h := hmac.New(sha1.New, key) h := hmac.New(sha1.New, key)
for _, v := range data { for _, v := range data {
h.Write(v) h.Write(v)
@ -91,7 +91,7 @@ func HMACSha1(key []byte, data ...[]byte) []byte {
return h.Sum(nil) return h.Sum(nil)
} }
func HMACSha256(key []byte, data ...[]byte) []byte { func HMACSHA256(key []byte, data ...[]byte) []byte {
h := hmac.New(sha256.New, key) h := hmac.New(sha256.New, key)
for _, v := range data { for _, v := range data {
h.Write(v) h.Write(v)
@ -99,7 +99,7 @@ func HMACSha256(key []byte, data ...[]byte) []byte {
return h.Sum(nil) return h.Sum(nil)
} }
func HMACSha512(key []byte, data ...[]byte) []byte { func HMACSHA512(key []byte, data ...[]byte) []byte {
h := hmac.New(sha512.New, key) h := hmac.New(sha512.New, key)
for _, v := range data { for _, v := range data {
h.Write(v) h.Write(v)

View File

@ -19,17 +19,17 @@ func TestHashCompatibility(t *testing.T) {
// SHA256 // SHA256
h2 := sha256.Sum256(data) h2 := sha256.Sum256(data)
if !bytes.Equal(crypto.Sha256(data), h2[:]) { t.Error("Sha256 mismatch") } if !bytes.Equal(crypto.SHA256(data), h2[:]) { t.Error("SHA256 mismatch") }
// HMAC // HMAC
key := []byte("key") key := []byte("key")
mac := hmac.New(sha256.New, key) mac := hmac.New(sha256.New, key)
mac.Write(data) mac.Write(data)
if !bytes.Equal(crypto.HMACSha256(key, data), mac.Sum(nil)) { t.Error("HMACSha256 mismatch") } if !bytes.Equal(crypto.HMACSHA256(key, data), mac.Sum(nil)) { t.Error("HMACSHA256 mismatch") }
} }
func TestHashString(t *testing.T) { func TestHashString(t *testing.T) {
s := []byte("hello") s := []byte("hello")
if crypto.MD5ToHex(s) == "" { t.Error("MD5ToHex empty") } if crypto.MD5ToHex(s) == "" { t.Error("MD5ToHex empty") }
if crypto.Sha256ToBase64(s) == "" { t.Error("Sha256ToBase64 empty") } if crypto.SHA256ToBase64(s) == "" { t.Error("SHA256ToBase64 empty") }
} }

View File

@ -11,24 +11,24 @@ func init() {
"MD5ToHex": MD5ToHex, "MD5ToHex": MD5ToHex,
"MD5ToBase64": MD5ToBase64, "MD5ToBase64": MD5ToBase64,
"MD5ToURLBase64": MD5ToURLBase64, "MD5ToURLBase64": MD5ToURLBase64,
"Sha1": Sha1, "SHA1": SHA1,
"Sha1ToHex": Sha1ToHex, "SHA1ToHex": SHA1ToHex,
"Sha1ToBase64": Sha1ToBase64, "SHA1ToBase64": SHA1ToBase64,
"Sha1ToURLBase64": Sha1ToURLBase64, "SHA1ToURLBase64": SHA1ToURLBase64,
"Sha256": Sha256, "SHA256": SHA256,
"Sha256ToHex": Sha256ToHex, "SHA256ToHex": SHA256ToHex,
"Sha256ToBase64": Sha256ToBase64, "SHA256ToBase64": SHA256ToBase64,
"Sha256ToURLBase64": Sha256ToURLBase64, "SHA256ToURLBase64": SHA256ToURLBase64,
"Sha512": Sha512, "SHA512": SHA512,
"Sha512ToHex": Sha512ToHex, "SHA512ToHex": SHA512ToHex,
"Sha512ToBase64": Sha512ToBase64, "SHA512ToBase64": SHA512ToBase64,
"Sha512ToURLBase64": Sha512ToURLBase64, "SHA512ToURLBase64": SHA512ToURLBase64,
// HMAC // HMAC
"HMACMD5": HMACMD5, "HMACMD5": HMACMD5,
"HMACSha1": HMACSha1, "HMACSHA1": HMACSHA1,
"HMACSha256": HMACSha256, "HMACSHA256": HMACSHA256,
"HMACSha512": HMACSha512, "HMACSHA512": HMACSHA512,
// Token // Token
"MakeToken": MakeToken, "MakeToken": MakeToken,