80 lines
2.0 KiB
Go
80 lines
2.0 KiB
Go
|
package md5_test
|
|||
|
|
|||
|
import (
|
|||
|
"fmt"
|
|||
|
"log"
|
|||
|
"ycc-server/pkg/lzkit/md5"
|
|||
|
)
|
|||
|
|
|||
|
func Example() {
|
|||
|
// 简单的字符串MD5
|
|||
|
hashValue := md5.EncryptString("hello world")
|
|||
|
fmt.Println("MD5(hello world):", hashValue)
|
|||
|
|
|||
|
// 使用链式API
|
|||
|
chainHash := md5.New().
|
|||
|
Add("hello").
|
|||
|
Add(" ").
|
|||
|
Add("world").
|
|||
|
Sum()
|
|||
|
fmt.Println("链式MD5:", chainHash)
|
|||
|
|
|||
|
// 使用盐值
|
|||
|
saltedHash := md5.EncryptStringWithSalt("password123", "main@example.com")
|
|||
|
fmt.Println("加盐MD5:", saltedHash)
|
|||
|
|
|||
|
// 验证哈希
|
|||
|
isValid := md5.VerifyMD5("hello world", hashValue)
|
|||
|
fmt.Println("验证结果:", isValid)
|
|||
|
|
|||
|
// 生成短版本的MD5
|
|||
|
fmt.Println("16位MD5:", md5.Get16("hello world"))
|
|||
|
fmt.Println("8位MD5:", md5.Get8("hello world"))
|
|||
|
|
|||
|
// 文件MD5计算
|
|||
|
filePath := "example.txt" // 这只是示例,实际上这个文件可能不存在
|
|||
|
fileHash, err := md5.EncryptFile(filePath)
|
|||
|
if err != nil {
|
|||
|
// 在实际代码中执行正确的错误处理
|
|||
|
log.Printf("计算文件MD5出错: %v", err)
|
|||
|
} else {
|
|||
|
fmt.Println("文件MD5:", fileHash)
|
|||
|
}
|
|||
|
|
|||
|
// HMAC-MD5
|
|||
|
hmacHash := md5.MD5HMAC("重要消息", "secret-key")
|
|||
|
fmt.Println("HMAC-MD5:", hmacHash)
|
|||
|
}
|
|||
|
|
|||
|
func ExampleEncryptString() {
|
|||
|
hash := md5.EncryptString("HelloWorld")
|
|||
|
fmt.Println(hash)
|
|||
|
// Output: 68e109f0f40ca72a15e05cc22786f8e6
|
|||
|
}
|
|||
|
|
|||
|
func ExampleMD5_Sum() {
|
|||
|
hash := md5.New().
|
|||
|
Add("Hello").
|
|||
|
Add("World").
|
|||
|
Sum()
|
|||
|
fmt.Println(hash)
|
|||
|
// Output: 68e109f0f40ca72a15e05cc22786f8e6
|
|||
|
}
|
|||
|
|
|||
|
func ExampleEncryptStringWithSalt() {
|
|||
|
// 为用户密码加盐,通常使用用户唯一标识(如邮箱)作为盐值
|
|||
|
hash := md5.EncryptStringWithSalt("password123", "main@example.com")
|
|||
|
fmt.Println("盐值哈希长度:", len(hash))
|
|||
|
fmt.Println("是否为有效哈希:", md5.VerifyMD5WithSalt("password123", "main@example.com", hash))
|
|||
|
// Output:
|
|||
|
// 盐值哈希长度: 32
|
|||
|
// 是否为有效哈希: true
|
|||
|
}
|
|||
|
|
|||
|
func ExampleGet16() {
|
|||
|
// 获取16位MD5,适合不需要完全防碰撞场景
|
|||
|
hash := md5.Get16("HelloWorld")
|
|||
|
fmt.Println(hash)
|
|||
|
// Output: f0f40ca72a15e05c
|
|||
|
}
|