我在編寫存儲過程時遇到問題,首先檢查用戶提供的密碼(也是散列)的哈希密碼。如果密碼匹配,程序會將密碼更改爲用戶提供的新密碼,以便在存儲之前進行散列。我對它進行了一次刺探,並看到下面的代碼出現,這似乎完全超出了正確的語法。任何可以提供的幫助將不勝感激。有問題的代碼如下:第一次匹配密碼然後修改它的存儲過程
Create Proc UserChangePassword
@pGuid varchar(50),
@pOldPassword varchar(100),
@pHashedPassword varchar (100),
@pNewPassword varchar(10)
AS
set @pHashedPassword = HASHBYTES('md5', @pOldPassword)
set @pOldPassword as select st01Password from st01UserData where @pGuid = st01GUID
If (@pOldPassword = @pHashedPassword)
Begin
Update st01UserData (
set st01Password = HASHBYTES('md5', @pNewPassword))
where st01GUID = @pGuid
Return 'SUCCESS'
Else
RETURN 'FAILED'
GO
爲什麼NEWPASSWORD只有10的大小?我希望這不是密碼大小的限制;至少允許32 – Riking
爲什麼你不通過哈希值?該應用程序應該能夠散列用戶輸入並以散列形式發送它...我不確定爲什麼要以純文本形式在更多圖層上公開它。 –