如何在Sql Server 2008中加密数字列?
我想在Sql Server 2008中加密员工的工资列。
列类型为数字或金钱。
是否有任何加密方法可以支持以下要求?
我使用C#和Sql Server 2008。
答案 0 :(得分:4)
您无法加密数字数据类型。您需要做的是将列转换为VarChar
列,然后您可以使用Base64以加密格式存储该数字。一个1000的VarChar
列就足够了。
您也可以将其存储在Binary
字段中,而无需进行Base64编码。
答案 1 :(得分:3)
以下是MONEY数据类型的示例:
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;
答案 2 :(得分:0)
任何加密函数都不会有数字或金钱的输出类型。加密值始终是字节数组(sql二进制数据类型),或字节数组的某种表示形式(例如base64编码的字符串)。