2013-06-28 17 views
5
CREATE ASYMMETRIC KEY Asym_EPassword 
WITH ALGORITHM = RSA_512 
ENCRYPTION BY PASSWORD = testdemo123 

Mam zaszyfrowaną kolumnę Password z powyższym kluczem asymetrycznym do szyfrowania.Odszyfruj hasło w zapytaniu SQL Server

Teraz chcę odszyfrować kolumnę password wewnątrz mojego select zapytania

Może ktoś sugerują, jak to zrobić?

+16

Nie jesteś przeznaczona do deszyfrowania haseł. Zamierzone jest szyfrowanie ciągów, które mają być testowane na podstawie zaszyfrowanej wartości przechowywanej w bazie danych. Jeśli coś da się odszyfrować, nie ma sensu go szyfrować, to nie byłoby bezpieczne. – Ben

+11

Chociaż zgadzam się, nie należy odszyfrowywać haseł. Myślę, że ostatnie stwierdzenie "jeśli coś da się odszyfrować, nie ma sensu je szyfrować" jest nieco błędne. Szyfrowanie powinno być odwracalne, w przypadku gdy mieszanie jest mechanizmem jednokierunkowym. –

+0

Po prostu pytam o odzyskanie odszyfrowanego hasła w zapytaniu wyboru, aby nie zapisywać w bazie danych –

Odpowiedz

1
SELECT CONVERT(NVARCHAR(100), 
    DecryptByAsymKey(AsymKey_ID('Asym_EPassword'), 
    YourColumn, 'testdemo123')) AS PlainText 
FROM YourTable; 

SQLFiddle nie pozwalają użytkownikom na tworzenie kluczy asymetrycznych, więc na kopię demo/wklej to do własnych SSMS:

CREATE ASYMMETRIC KEY Asym_EPassword 
WITH ALGORITHM = RSA_512 
ENCRYPTION BY PASSWORD = 'testDemo123!' 

DECLARE @PlainText NVARCHAR(100) 
DECLARE @CipherText VARBINARY(MAX) 

SET @PlainText = 'AAAAA' 
SELECT @CipherText = EncryptByAsymKey(AsymKey_ID('Asym_EPassword'), @PlainText); 

SELECT @CipherText; 

SELECT CONVERT(NVARCHAR(100), DecryptByAsymKey(AsymKey_ID('Asym_EPassword'), @CipherText, N'testDemo123!')); 
+1

Użyłem tego samego zapytania, ale pole tekstowe ma wartość pustą –

+0

@ user1826753 Sprawdź, czy poprawnie wpisałeś nazwę klucza i czy jesteś pewien, że dane są zaszyfrowane tym kluczem? –

Powiązane problemy