【发布时间】:2013-08-28 17:58:47
【问题描述】:
我正在尝试使用 EncryptByPassPhrase 和 DecryptByPassPhrase 将 int 值持久保存在 SQL 数据库中。
我有 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]
字符串列(Base)已正确解密,但整数列未正确解密:原始值 1 解密为 49,值 2 解密为 50,等等。
我怀疑我的转换例程的数据类型不正确,但我不知道如何修复它。
【问题讨论】:
标签: sql encryption