Sql类型和加密大小

时间:2014-03-06 13:58:03

标签: c# sql sql-server sql-server-2012 encryption-symmetric

我在一些动态生成的Sql Server 2012表中引入了Symmetric Key encription。

我希望存储:

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

    创建密钥
    CREATE SYMMETRIC KEY MyKey
        WITH ALGORITHM = AES_256
        ENCRYPTION BY CERTIFICATE MyCertificate
    GO
    

    我使用ie。

    插入数据
    insert into SecureTable(value) values (EncryptByKey(@ui, CONVERT(varbinary(max), 12345)))
    

    结果如下:

      

    0x0022377E67EFF34DAAAD0F812153593D01000000C867C6F2085D3850BF1F50275945CFEA90297C51D537E8C443B5F34050B325E0

    如何有效调整目标列的大小?使用始终VARBINARY(MAX)感觉不对劲!

    我正在寻找类似的东西:

    • int => VARBINARY(32)
    • varchar(x)=> varbinary(Y)
    • boolean => VARBINARY(10)
    • DataTime => ...

1 个答案:

答案 0 :(得分:2)

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

  • integer:需要52个字节
  • varchar(X):取X + 45到X + 65字节
  • float:68字节
  • 十进制(30,12):68字节
  • 日期时间:68字节
  • 位:52字节