Как зашифровать числовой столбец в Sql Server 2008? - PullRequest
2 голосов
/ 19 июля 2011

Как зашифровать числовой столбец в Sql Server 2008?

Я хочу зашифровать столбец зарплаты сотрудника в Sql Server 2008.

Тип столбца числовой или денежный.

Существует ли какой-либо метод шифрования, который поддерживает следующие требования?

  1. Существует ли какая-либо определенная пользователем функция шифрования sql для шифрования столбца? Тип зашифрованного результата - строка будет в порядке.
  2. Поддерживает ли сервер SQL этот тип шифрования сам по себе?
  3. Существует ли простой метод шифрования, который может шифровать числа, такие как 123,56–362,15?

Я использую C # и Sql Server 2008.

Ответы [ 3 ]

4 голосов
/ 19 июля 2011

Вы не можете зашифровать числовой тип данных. Вам нужно будет преобразовать столбец в столбец VarChar, после чего вы можете сохранить число в зашифрованном формате с помощью Base64. VarChar столбец 1000 будет более чем достаточно.

Вы также можете сохранить его в поле Binary без необходимости кодирования Base64.

3 голосов
/ 24 декабря 2013

Вот пример с типом данных MONEY:

DECLARE @actualAmount MONEY;
DECLARE @encryptedAmount VARBINARY(128);

-- Encrypt value
SET @actualAmount = $12345.67;
SET @encryptedAmount = ENCRYPTBYKEY(KEY_GUID('MyEncryptionKeyName'), CONVERT(VARCHAR(30), @actualAmount));
PRINT @actualAmount;
PRINT @encryptedAmount;

-- Decrypt value
DECLARE @unencryptedActualAmount MONEY;
SET @unencryptedActualAmount = CONVERT(MONEY, CONVERT(VARCHAR(30), DECRYPTBYKEY(@encryptedAmount)));
PRINT @unencryptedActualAmount;
0 голосов
/ 19 июля 2011

Никакая функция шифрования никогда не будет иметь тип вывода числовой или денежный. Зашифрованными значениями всегда являются байтовые массивы (sql двоичный тип данных) или некоторое представление байтового массива (например, символьная строка в кодировке base64).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...