2011-07-19 13 views
1

Sql Server 2008の数値列を暗号化する方法は?Sql Server 2008の数値列を暗号化する方法は?

は、私は、SQL Server 2008の

カラム型が数値またはお金であるに従業員の給与の列を暗号化します。

次の要件をサポートできる暗号化方式はありますか?

  1. カラムを暗号化するSQL暗号化ユーザ定義関数はありますか?暗号化された結果のタイプは、文字列が大丈夫です。
  2. SQL Serverはこのタイプの暗号化を単独でサポートしていますか?
  3. 123.56〜362.15などの数字を暗号化する簡単な暗号化方法はありますか?

私は暗号化機能は、これまで、数値やお金の出力タイプを持ちません2008年

+0

最も安全な方法:データベースに保管しないでください.... –

+0

列を暗号化する機能を定義した任意のSQL暗号化ユーザーはありますか?暗号化された結果のタイプは、文字列が大丈夫です。 – Mike108

答えて

-1

C#とSQL Serverを使用します。暗号化された値は、常にバイト配列(SQLバイナリデータ型)、またはバイト配列(base64エンコード文字列など)の表現です。

+0

123.56から362.15のような数字を暗号化できる単純な暗号化方法はありますか? – Mike108

+0

@ Mike108 :それはあまり暗号化されません! –

+0

@Mike - 私はちょうどそこにないと言ったと信じています。もしあなたが望めば、私はもう一度言います。 –

4

数値データ型を暗号化することはできません。あなたがしなければならないことは、カラムをVarCharカラムに変換し、その値をBase64で暗号化されたフォーマットで保存することです。 VarCharの列が1000以上あれば十分です。

Base64エンコーディングを行うことなく、Binaryフィールドに格納することもできます。ここで

2

は、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; 
関連する問題