101 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # 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值,包括:
 | ||
| - `123456`
 | ||
| - `admin123`
 | ||
| - `password`
 | ||
| - `root`
 | ||
| - `test123`
 | ||
| - `MyP@ssw0rd!2024`
 | ||
| - `admin@123`
 | ||
| - `123456789`
 | ||
| - `qwerty`
 | ||
| - `abc123`
 | ||
| 
 | ||
| ## 性能测试结果
 | ||
| 
 | ||
| ### Cost=10 性能
 | ||
| - **执行时间**: ~41.7ms/op
 | ||
| - **内存分配**: 5314 B/op, 11 allocs/op
 | ||
| 
 | ||
| ### Cost=12 性能  
 | ||
| - **执行时间**: ~164.1ms/op
 | ||
| - **内存分配**: 5691 B/op, 12 allocs/op
 | ||
| 
 | ||
| ## 使用方法
 | ||
| 
 | ||
| ### 运行所有测试
 | ||
| ```bash
 | ||
| cd pkg/lzkit/crypto
 | ||
| go test -v
 | ||
| ```
 | ||
| 
 | ||
| ### 运行密码相关测试
 | ||
| ```bash
 | ||
| go test -run "TestPassword|TestGenerate" -v
 | ||
| ```
 | ||
| 
 | ||
| ### 运行性能测试
 | ||
| ```bash
 | ||
| go test -bench=BenchmarkPassword -benchmem -run="^$"
 | ||
| ```
 | ||
| 
 | ||
| ### 生成密码hash
 | ||
| ```bash
 | ||
| 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
 | ||
| ...
 | ||
| === 密码生成完成 ===
 | ||
| ```
 | ||
| 
 | ||
| ## 注意事项
 | ||
| 
 | ||
| 1. **Cost参数**: 默认使用cost=10,可根据安全需求调整
 | ||
| 2. **性能考虑**: Cost越高越安全,但性能消耗越大
 | ||
| 3. **Hash唯一性**: 每次生成的hash都不同,但验证结果一致
 | ||
| 4. **安全性**: 使用bcrypt算法,适合生产环境使用
 | ||
| 
 | ||
| ## 测试状态
 | ||
| 
 | ||
| ✅ 所有bcrypt相关测试通过  
 | ||
| ✅ 性能测试完成  
 | ||
| ✅ 密码生成功能正常  
 | ||
| ✅ 验证功能正常
 |