存储加密后的密码时,通常**建议使用 varchar** 类型而不是 char 类型。
varchar 类型是可变长度的字符串类型,可以存储不同长度的密码。而 char 类型是固定长度的字符串类型,如果密码长度不足指定长度,会用空格字符填充。
由于加密后的密码长度可能因加密算法和密码复杂度而异,因此使用 varchar 类型更灵活,可以适应不同长度的密码。
另外,为了安全考虑,还应该注意以下几点:
- 密码加密:在存储密码之前,应该使用适当的加密算法对密码进行加密。不建议明文存储密码。
- 加盐处理:为了增加密码安全性,应该使用随机生成的盐值对密码进行加盐处理,再进行加密。盐值是一个随机的字符串,与密码一起进行加密,可以增加密码的破解难度。
//使用md5加密,加盐处理的过程
func encryptV1(pwd string) string {
newPwd := pwd + "hhhhhhhllllaaadd" //不能随便起,且不能暴露
hash := md5.New()
hash.Write([]byte(newPwd))
hashBytes := hash.Sum(nil)
hashString := hex.EncodeToString(hashBytes)
fmt.Printf("加密后的密码:%s\n", hashString)
return hashString
}
- 防止明文传输:在传输密码时,应该使用安全的加密通道,如 HTTPS,以防止密码被拦截和窃取。
总结起来,密码字段应该使用 varchar 类型,并且在存储之前进行适当的加密和加盐处理。同时,在传输密码时要确保使用安全的通道进行传输。