Ты уверен, что можешь. Вот POC:
use tempdb;
go
create symmetric key [mykey]
WITH ALGORITHM = AES_256
ENCRYPTION BY PASSWORD = 'SouperSecretz>789'
go
create table dbo.Secrets (
Secret varbinary(400)
)
go
create view dbo.openSecrets
as
select cast(decryptbykey(Secret) as varchar(200)) as OpenSecret
from dbo.Secrets
go
open symmetric key [mykey]
DECRYPTION BY PASSWORD = 'SouperSecretz>789'
go
insert into dbo.Secrets (Secret)
values (ENCRYPTBYKEY(KEY_GUID('myKey'), 'asdfasdf'));
select *
from dbo.openSecrets;
close symmetric key [mykey];
select *
from dbo.openSecrets;
В этой демонстрации я создаю:
- симметричный ключ
- таблица, в которой будут храниться данные, зашифрованные этим ключом
- представление поверх этой таблицы, которое выполняет расшифровку
Из двух выборов, которые я делаю против просмотра, у одного из них ключ открыт, а у другого нет. Первый показывает открытый текст, а второй возвращает null
.
Итак, если у вас открыт ключ в сеансе, вы сможете видеть данные в виде открытого текста. А если нет, то вы (успешно) получите null
для этого столбца.