2014-03-06 32 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個字節