Типы Sql и зашифрованный размер

Я представляю шифрование с симметричным ключом для некоторых динамически генерируемых таблиц Sql Server 2012.

Я ожидаю хранить:

  1. varchar(X)
  2. целые числа
  3. дата время
  4. логический

Я создаю ключ, используя

CREATE SYMMETRIC KEY MyKey
    WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE MyCertificate
GO

Я вставляю данные, используя i.e.

insert into SecureTable(value) values (EncryptByKey(@ui, CONVERT(varbinary(max), 12345)))

Результат примерно такой:

0x0022377E67EFF34DAAAD0F812153593D01000000C867C6F2085D3850BF1F50275945CFEA90297C51D537E8C443B5F34050B325E0

Как я могу эффективно изменить размер целевых столбцов? Использование Always VARBINARY(MAX) кажется неправильным!

Я ищу что-то вроде:

  • int => varbinary(32)
  • varchar(x) => varbinary(Y)
  • логическое => varbinary(10)
  • ДатаВремя => ...

person Stefano Altieri    schedule 06.03.2014    source источник
comment
Создайте несколько фиктивных данных разного размера и посмотрите, насколько большими они станут.   -  person Joe Enos    schedule 06.03.2014


Ответы (1)


Как предложил @Joe Enos, я попытался зашифровать несколько типов данных. Это эмпирический результат:

  • целое число: занимает 52 байта
  • varchar(X): принимает от X+45 до X+65 байт.
  • с плавающей запятой: 68 байт
  • десятичный (30,12): 68 байт
  • дата и время: 68 байт
  • бит: 52 байта
person Stefano Altieri    schedule 06.03.2014