Я пытаюсь использовать 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 и т. Д.
Я подозреваю, что мои типы данных для моих процедур преобразования неверны, но я не могу понять, как это исправить.