Zadanie: znalezienie klucza symetrycznego, którym zaszyfrowano określone dane (SQL Server 2005).
Załóżmy, że w tabeli
t:
CREATE TABLE t
(
data varbinary(500)
)
znajduje się 1 rekord z zaszyfrowaną informacją:
-- SELECT * FROM t
0x00F4938C160E8543BBE859267A7748CE01000000B748(..)
Aby wskazać klucz symetryczny, którym została zaszyfrowana informacja, trzeba posłużyć się pewną sztuczką - należy zrzutować zaszyfrowaną informację (typ varbinary) na typ uniqueidentifier:
DECLARE @guid uniqueidentifier
SELECT @guid = CAST(data as uniqueidentifier) FROM t
Po wykonaniu powyższego kodu, zmienna
@guid będzie przechowywała tzw. key guid, czyli guid klucza symetrycznego. Teraz wystarczy w widoku
sys.symmetric_keys (lub widokach - jeżeli w grę wchodzi kilka baz/serwerów) odnaleźć rekord ze znalezionym guidem:
SELECT name FROM sys.symmetric_keys WHERE key_guid = @guid
Zadanie rozwiązane.