2015-02-05 3 views
2

Я пытаюсь зашифровать один из моих чувствительных столбцов в таблице SQL Server. Я пробовал шифрование AES256 с помощью этого скрипта, и он отлично работает. Но я не хочу создавать сертификаты или симметричные ключи на моем SQL Server, так как это может быть проблемой безопасности позже. Как я могу зашифровать данные одним паролем или ключом в моем запросе? Другая проблема с этим методом заключается в том, что я могу использовать только один главный пароль для моего шифрования.Шифрование столбца MS SQL без сертификата

CREATE MASTER KEY ENCRYPTION 
    BY PASSWORD = '$Passw0rd' 
    GO 

    CREATE CERTIFICATE AESEncryptTestCert 
    WITH SUBJECT = 'AESEncrypt' 
    GO 

    CREATE SYMMETRIC KEY AESEncrypt 
    WITH ALGORITHM = AES_256 ENCRYPTION -- TRIPLE_DES ENCRYPTION 
    BY CERTIFICATE AESEncryptTestCert; 


    OPEN SYMMETRIC KEY AESEncrypt DECRYPTION 
    BY CERTIFICATE AESEncryptTestCert 
    SELECT ENCRYPTBYKEY(KEY_GUID('AESEncrypt'),'The text to be encrypted'); 
+0

А в чем проблема вы пытаетесь решить с помощью этого шифрования столбцов? – jarlh

+0

столбец содержит наиболее важные данные, а таблица доступна для многих людей через связанный стол в файлах доступа. Я не хочу, чтобы они отображали значения столбца, но люди, которые используют другое приложение. –

+0

Я не знаю вашу среду, но не могу ли предоставить права доступа и/или виды решения? – jarlh

ответ

7

Вы можете использовать EncryptByPassPhrase и DecryptByPassPhrase, например:

DECLARE @CypherText varbinary(8000) 
DECLARE @ClearText varchar(128) = 'Text to encrypt' 

SET @CypherText = EncryptByPassPhrase ('[email protected]', @ClearText) 

DECLARE @DecryptedText varchar(128) 
SET @DecryptedText = DecryptByPassPhrase('[email protected]', @CypherText) 

SELECT @CypherText AS CypherText, @DecryptedText As DecryptedText 

EDIT: Приведенный выше код производит следующий вывод

+----------------------------------------------------------------------------+-----------------+ 
|         CypherText         | DecryptedText | 
+----------------------------------------------------------------------------+-----------------+ 
| 0x01000000F1D813F399246484FDA8D7C7D22BFBCF748D3F6033D4E9980FCDC58A387A1A93 | Text to encrypt | 
+----------------------------------------------------------------------------+-----------------+ 
+1

Это УДИВИТЕЛЬНО! Как я не знал об этом ??? – twoleggedhorse

+0

Спасибо, дорогой брат ,,, :) У меня действительно не было никакой надежды, если это сработает ... –

Смежные вопросы