/ / Jak zaszyfrować kolumnę numeryczną w Sql Server 2008? - sql-server, sql-server-2008

Jak zaszyfrować kolumnę numeryczną w Sql Server 2008? - sql-server, sql-server-2008

Jak zaszyfrować kolumnę numeryczną w Sql Server 2008?

Chcę zaszyfrować kolumnę płac pracownika w Sql Server 2008.

Typ kolumny to cyfry lub pieniądze.

Czy istnieje metoda szyfrowania, która może obsługiwać następujące wymagania?

  1. Czy istnieje funkcja szyfrowania sql zdefiniowana przez użytkownika do szyfrowania kolumny? Typ zaszyfrowanego wyniku jest łańcuchem będzie w porządku.
  2. Czy serwer sql obsługuje ten typ szyfrowania sam?
  3. Czy istnieje prosta metoda szyfrowania, która może szyfrować liczby takie jak od 123.56 do 362.15?

Używam C # i Sql Server 2008.

Odpowiedzi:

0 dla odpowiedzi № 1

Żadna funkcja szyfrowania nie będzie miała typu wyjściowegoliczby lub pieniędzy, zawsze. Zaszyfrowane wartości to zawsze tablice bajtów (sql binarny typ danych) lub niektóre reprezentacje tablicy bajtów (takie jak łańcuch znaków zakodowany w standardzie 64).


4 dla odpowiedzi nr 2

Nie można zaszyfrować liczbowego typu danych. Konieczne będzie przekonwertowanie kolumny na VarChar kolumna, możesz zapisać numer w zaszyfrowanym formacie za pomocą Base64. ZA VarChar kolumna 1000 będzie więcej niż wystarczająco.

Możesz również zapisać go w Binary pole bez konieczności kodowania Base64.


2 dla odpowiedzi nr 3

Oto przykład z typem danych 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;