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

SQL Server 內建加密函數 PWDENCRYPT 與 PWDCOMPARE 實戰應用

     編輯:關於SqlServer

背景

master.dbo.sysxlogins 的 password 欄位儲存加密後的二進位值。加密邏輯位於 sp_addlogin 內呼叫 PWDENCRYPT(),驗證則使用 PWDCOMPARE()。

函數說明

實作範例

DECLARE @ClearPwd VARCHAR(255) = 'mySecret123';
DECLARE @EncPwd VARBINARY(255);

-- 加密
SELECT @EncPwd = CONVERT(VARBINARY(255), PWDENCRYPT(@ClearPwd));
SELECT @EncPwd AS EncryptedPassword;
-- 結果範例:0x0100A3F2...

-- 驗證正確密碼
SELECT PWDCOMPARE(@ClearPwd, @EncPwd, 0) AS MatchResult; -- 1

-- 驗證錯誤密碼
SELECT PWDCOMPARE('WrongPwd', @EncPwd, 0) AS MatchResult; -- 0

應用場景

  • 自行管理帳號密碼表,僅儲存 PWDENCRYPT 結果,驗證時用 PWDCOMPARE 比對,避免明文外洩。
  • 審計現有登入密碼強度(需搭配字典檔)。
  • 跨伺服器同步登入密碼:匯出 password 欄位至新伺服器 sp_addlogin @password = 0x..., @encryptopt = 'skip_encryption'。

注意事項

  • 此為未公開內部函數,版本間可能變更,生產環境建議改用 CREATE LOGIN ... WITH PASSWORD = '...' HASHED(SQL 2005+)。
  • PWDCOMPARE 第三參數 @version 對應 xstatus & 2048,一般傳 0 即可。
  • 單向雜湊不可逆向解密,僅能比對驗證。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
函數用途語法
PWDENCRYPT單向雜湊加密明文密碼PWDENCRYPT(@clear_password) 回傳 varbinary
PWDCOMPARE比對明文與加密密碼是否相符PWDCOMPARE(@clear_password, @encrypted_password, @version) 回傳 1/0