我使用此存儲過程對SQL Server表進行散列和寫入密碼。將VARBINARY值寫入SQL Server 2008中的NVARCHAR列
DECLARE @PassWord as nvarchar(2000) = 'PSW'
...
DECLARE @MD5Password nvarchar(2000);
SELECT @MD5Password = CONVERT(nvarchar(2000),@Password);
SELECT HASHBYTES('MD5', @MD5Password);
SET @MD5Password = HASHBYTES('MD5', @MD5Password)
INSERT INTO [MyDataBase].[MyDatatable] (Column1)
VALUES (@MD5Password)
類型的Column1
是nvarchar(2000)
。
當我使用此代碼在MyDatatable中編寫密碼時,結果並非如我所料,它的寫法像中文字符。
我知道這是因爲從varbinary
(類型@MD5Password
)到nvarchar
轉換,但我不知道我怎麼也得做寫在Mydatatable了良好的價值觀?
你能幫忙嗎?
謝謝
呃,我可以問你爲什麼不製作varbinary列嗎? –
嗨,@Aaron。因爲該列是由其他需要此列的nvarchar的軟件創建的。 – Chalumeau
那麼其他軟件不應該讀取密碼,不要在轉換之前將其轉換爲純文本。如果你只是將它轉換爲字符串並將其傳遞給應用程序,那麼對它進行哈希處理有什麼意義呢?應用程序應該使用用戶提供的密碼,對其進行散列,並將其與您存儲的散列密碼進行比較。一旦存儲完畢,任何人都不應該將其轉換回純文本。你試圖做的事情聽起來像另一個Adobe崩潰等待發生。 –