首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 內建加密函數 pwdencrypt/pwdcompare 實作自訂密碼雜湊

     編輯:關於SqlServer

SQL Server 內部使用未文件化的 pwdencrypt() 加密密碼、pwdcompare() 驗證密碼(單向雜湊,不可逆)。透過檢視 master.dbo.sp_addlogin、sp_password 原始碼可發現用法。本文示範如何呼叫這兩個函數實作自訂帳號密碼雜湊驗證機制。

加密與驗證範例

-- 加密明文密碼
DECLARE @ClearPwd VARCHAR(255) = 'test', @EncryptedPwd VARBINARY(255);
SELECT @EncryptedPwd = CONVERT(VARBINARY(255), pwdencrypt(@ClearPwd));
SELECT @EncryptedPwd;  -- 0x0100... (二進位雜湊值)

-- 驗證密碼
SELECT pwdcompare(@ClearPwd, @EncryptedPwd, 0);      -- 回傳 1 (匹配)
SELECT pwdcompare('WrongPwd', @EncryptedPwd, 0);     -- 回傳 0 (不匹配)

注意事項

  • pwdencrypt 為單向雜湊,無法解密還原明文。
  • pwdcompare 第三參數為 xstatus 遮罩,一般傳 0 即可。
  • 此為內部未文件化函數,版本升級可能變更,生產環境建議改用 HASHBYTES('SHA2_256', ...) 等標準函數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved