From e05fbec739fc088dd92e6810c157da59c59ba9a7 Mon Sep 17 00:00:00 2001 From: Yang Luo Date: Mon, 21 Jul 2025 19:32:59 +0800 Subject: [PATCH] feat: keep backward compatibility in GetHashedPassword() --- cred/md5-user-salt.go | 8 ++++++++ cred/sha256-salt.go | 8 ++++++++ cred/sha512-salt.go | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/cred/md5-user-salt.go b/cred/md5-user-salt.go index 6a83e414..429f644e 100644 --- a/cred/md5-user-salt.go +++ b/cred/md5-user-salt.go @@ -41,9 +41,17 @@ func (cm *Md5UserSaltCredManager) GetHashedPassword(password string, salt string if salt == "" { return getMd5HexDigest(password) } + return getMd5HexDigest(getMd5HexDigest(password) + salt) } func (cm *Md5UserSaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool { + // For backward-compatibility + if salt == "" { + if hashedPwd == cm.GetHashedPassword(getMd5HexDigest(plainPwd), salt) { + return true + } + } + return hashedPwd == cm.GetHashedPassword(plainPwd, salt) } diff --git a/cred/sha256-salt.go b/cred/sha256-salt.go index acd44e29..aa7a4ff6 100644 --- a/cred/sha256-salt.go +++ b/cred/sha256-salt.go @@ -41,9 +41,17 @@ func (cm *Sha256SaltCredManager) GetHashedPassword(password string, salt string) if salt == "" { return getSha256HexDigest(password) } + return getSha256HexDigest(getSha256HexDigest(password) + salt) } func (cm *Sha256SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool { + // For backward-compatibility + if salt == "" { + if hashedPwd == cm.GetHashedPassword(getSha256HexDigest(plainPwd), salt) { + return true + } + } + return hashedPwd == cm.GetHashedPassword(plainPwd, salt) } diff --git a/cred/sha512-salt.go b/cred/sha512-salt.go index c3bee357..606c5f57 100644 --- a/cred/sha512-salt.go +++ b/cred/sha512-salt.go @@ -41,9 +41,17 @@ func (cm *Sha512SaltCredManager) GetHashedPassword(password string, salt string) if salt == "" { return getSha512HexDigest(password) } + return getSha512HexDigest(getSha512HexDigest(password) + salt) } func (cm *Sha512SaltCredManager) IsPasswordCorrect(plainPwd string, hashedPwd string, salt string) bool { + // For backward-compatibility + if salt == "" { + if hashedPwd == cm.GetHashedPassword(getSha512HexDigest(plainPwd), salt) { + return true + } + } + return hashedPwd == cm.GetHashedPassword(plainPwd, salt) }