Hash hashes a plain text password.
(plain string)
| 64 | |
| 65 | // Hash hashes a plain text password. |
| 66 | func (p PBKDF2) Hash(plain string) (string, error) { |
| 67 | if p.SaltLength == 0 { |
| 68 | return "", errZeroLengthSalt.New() |
| 69 | } |
| 70 | |
| 71 | salt := random.String(p.SaltLength) |
| 72 | hash := hash64([]byte(plain), []byte(salt), p.Iterations, p.KeyLength, p.Algorithm) |
| 73 | pass := fmt.Sprintf("%s$%s$%v$%s$%s", p.Name(), p.Algorithm, p.Iterations, salt, string(hash)) |
| 74 | |
| 75 | return pass, nil |
| 76 | } |
| 77 | |
| 78 | var errInvalidPBKDF2 = errors.DefineInternal( // internal because hash is in DB. |
| 79 | "invalid_pbkdf2_format", |