2014-03-06 26 views
2

我在一些动态生成的Sql Server 2012表中引入了对称密钥encription。Sql类型和加密大小

我期望存储:

  1. VARCHAR(X)
  2. 整数
  3. 日期时间
  4. 布尔

我创建使用

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

我插入使用即

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

结果数据是这样的:

0x0022377E67EFF34DAAAD0F812153593D01000000C867C6F2085D3850BF1F50275945CFEA90297C51D537E8C443B5F34050B325E0

我怎样才能有效地大小的目标列?总是使用VARBINARY(MAX)感觉不对!

我在寻找类似:

  • INT => VARBINARY(32)
  • VARCHAR(X)=> VARBINARY(Y)
  • 布尔=> VARBINARY(10)
  • DataTime => ...
+0

创建各种尺寸的一些虚拟的数据,看它有多大成为。 –

回答

2

正如@Joe Enos所建议的那样,我尝试加密几种数据类型。这是经验性结果:

  • 整数:取52字节
  • VARCHAR(X):采用X + 45到X + 65个字节
  • 浮动:68个字节
  • 十进制(30,12) :68个字节
  • 日期时间:68个字节
  • 位:52个字节