我正嘗試使用EncryptByPassPhrase和DecryptByPassPhrase在SQL數據庫中保留int值。如何將DECRYPTBYPASSPHRASE與Int列一起使用
我有2個原始列(僅用於測試,我將刪除它們,一旦此代碼正在工作),Base(varchar)和NextIndex(int)。我加密其價值的2個varbinary列是這樣的:
DECLARE @PassphraseEnteredByUser nvarchar(128);
SET @PassphraseEnteredByUser = 'some password';
UPDATE [dbo].[Licenses]
SET EBase = EncryptByPassPhrase(@PassphraseEnteredByUser, Base),
ENextIndex = EncryptByPassPhrase(@PassphraseEnteredByUser, CONVERT(varchar(10), NextIndex);
GO
然後我試圖檢索使用DECRYPTBYPASSPHRASE存儲過程的值:
DECLARE @PassphraseEnteredByUser nvarchar(128);
SET @PassphraseEnteredByUser = 'some password';
SELECT TOP 1000 [Id]
,[Base]
,[NextIndex]
,CONVERT(varchar, DECRYPTBYPASSPHRASE(@PassphraseEnteredByUser, EBase)) as DEBase
,CONVERT(int, DECRYPTBYPASSPHRASE(@PassphraseEnteredByUser, ENextIndex)) as DENextIndex
FROM [dbo].[Licenses]
的字符串列(庫)是正確解密,但整數列不是:原始值1被解密爲49,因爲值2解密爲50等。
我懷疑我的數據類型爲我的轉換例程是不正確的,但我無法弄清楚如何修理它。
事實上,將NextIndex的CONVERT()調用更改爲目標varbinary而不是varchar(10),使得此加密/解密工作正常!奇怪的是,varchar列轉換爲varbinary並不需要,並且將int轉換爲varchar也不起作用。 – 2011-06-13 09:31:39