mysql 是否可以在视图中使用对称键?

kknvjkwl  于 2023-11-16  发布在  Mysql
关注(0)|答案(1)|浏览(95)

我有一个视图,我想用一个条件来改变它。但是我想在视图中使用对称密钥。下面是我的代码:

create view dbo.[Test_view]
select

t.med_id,
t.medicine_name,
case when 
    t.taxo_id like '%include%' then '1'
    else '0' end as 'Taxo_number' ----The taxo_id is encrypted column
from dbo.Meds t

字符串
我想在视图“Taxo_number”中包含多一列,该视图基于使用对称密钥加密的taxo_id列。

My key is: OPEN SYMMETRIC KEY [Test_Key] DECRYPTION BY CERTIFICATE [Test_Cert]


有没有办法把这个键包含在'View'脚本中?请帮忙!

wvt8vs2t

wvt8vs2t1#

你当然可以。这是一个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

相关问题