2011-07-19 52 views
1

如何加密Sql Server 2008中的數字列?如何加密Sql Server 2008中的數字列?

我想給僱員的工資列在SQL Server 2008中

列的類型是數字或貨幣進行加密。

有什麼加密方法可以支持以下要求嗎?

  1. 是否有任何sql加密用戶定義函數來加密列?加密結果的類型是字符串就可以了。
  2. sql server是否支持這種類型的加密?
  3. 有沒有一種簡單的加密方法可以加密數字,如123.56到362.15?

我使用C#和SQL Server 2008

+0

最安全的方式:不要將其存儲在數據庫.... –

+0

是否有任何SQL加密用戶定義的函數加密列?加密結果的類型是字符串就可以了。 – Mike108

回答

-1

沒有加密功能將有一個數字或金錢的輸出類型,直到永遠。加密值始終是字節數組(SQL二進制數據類型)或字節數組的某種表示形式(例如base64編碼的字符串)。

+0

有沒有一種簡單的加密方法可以加密數字,如123.56到362.15? – Mike108

+0

@ Mike108 :這不會是一個加密! –

+0

@Mike - 我想我剛纔說沒有。如果你願意,我可以再說一遍。 –

4

您無法加密數字數據類型。你需要做的是將該列轉換爲VarChar列,然後可以使用Base64以加密格式存儲該號碼。 1000列的VarChar列將會更多。

您也可以將其存儲在Binary字段中,而無需執行Base64編碼。

2

下面是用錢的數據類型的例子:

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;