2.4 KiB
2.4 KiB
bcrypt 密码加密测试文档
功能概述
为 pkg/lzkit/crypto/bcrypt.go 中的 PasswordHash 和 PasswordVerify 函数创建了完整的测试套件。
测试文件
- 文件位置:
pkg/lzkit/crypto/bcrypt_test.go - 测试函数:
TestPasswordHash- 测试密码加密功能TestPasswordVerify- 测试密码验证功能TestGeneratePasswords- 生成常用密码的hash值BenchmarkPasswordHash- 性能测试BenchmarkPasswordVerify- 验证性能测试
测试覆盖
1. 密码加密测试 (TestPasswordHash)
- ✅ 默认cost加密 (cost=10)
- ✅ 自定义cost加密 (cost=12)
- ✅ 空密码处理
- ✅ 复杂密码处理
- ✅ 密码验证功能
- ✅ 错误密码验证
2. 密码验证测试 (TestPasswordVerify)
- ✅ 正确密码验证
- ✅ 错误密码验证
3. 密码生成测试 (TestGeneratePasswords)
生成10个常用密码的hash值,包括:
123456admin123passwordroottest123MyP@ssw0rd!2024admin@123123456789qwertyabc123
性能测试结果
Cost=10 性能
- 执行时间: ~41.7ms/op
- 内存分配: 5314 B/op, 11 allocs/op
Cost=12 性能
- 执行时间: ~164.1ms/op
- 内存分配: 5691 B/op, 12 allocs/op
使用方法
运行所有测试
cd pkg/lzkit/crypto
go test -v
运行密码相关测试
go test -run "TestPassword|TestGenerate" -v
运行性能测试
go test -bench=BenchmarkPassword -benchmem -run="^$"
生成密码hash
go test -run TestGeneratePasswords -v
示例输出
=== 生成密码Hash值 ===
1. 密码: 123456 Hash: $2a$10$AXcpNL9y5RYLiObTLFq4KOWKtlV3jEUuCd6fuzmSW2yYsSELJ23D.
2. 密码: admin123 Hash: $2a$10$5PUD/kpFGJ.09Gi.VGzu2.sCp9ZEshEcCaP4tKPNMgbvOaY8Hq7Sy
3. 密码: password Hash: $2a$10$Tjl5JY13eyGE4tPUdbco0OToz2iN6UY3Dm/QTYUpZx3b5QAPH4Aq6
...
=== 密码生成完成 ===
注意事项
- Cost参数: 默认使用cost=10,可根据安全需求调整
- 性能考虑: Cost越高越安全,但性能消耗越大
- Hash唯一性: 每次生成的hash都不同,但验证结果一致
- 安全性: 使用bcrypt算法,适合生产环境使用
测试状态
✅ 所有bcrypt相关测试通过
✅ 性能测试完成
✅ 密码生成功能正常
✅ 验证功能正常