mysql - 是否可以在 View 中使用对称键?

标签 mysql sql sql-server view encryption-symmetric

我想根据条件更改 View 。但我想在 View 内使用对称 key 。下面是我的代码:

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

我想在 View “Taxo_number”中再包含一列,该列基于使用对称 key 加密的taxo_id 列。

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

有没有办法将此键包含在“查看”脚本中?请帮忙!

最佳答案

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

在这个演示中,我正在创建:

  • 对称 key
  • 保存由该 key 加密的数据的表
  • 该表顶部的一个 View ,用于解密

在我针对 View 执行的两个选择中,其中一个已打开 key ,另一个则没有。前者显示明文,后者返回 null

因此,只要您在 session 中打开 key ,您就应该能够看到明文数据。如果没有,您将(成功)获得该列的 null

关于mysql - 是否可以在 View 中使用对称键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55871478/

相关文章:

sql-server - 如何将 MSDE 数据库复制到 SQL Server 2008 Express?

sql - 解析查询时出错。 [ token 行号 = 1, token 行偏移 = 13,错误 token = 交易 ]

php - 我正在处理 SQL 查询,但没有处理完全外连接

php - 我的 PHP 代码中存在荒谬的错误!

mysql - 如何将 CSV 导入 MySQL,其中字段以逗号分隔,并且包含逗号但不包含括弧

sql - Postgres UPSERT UPdate 使用行值

sql - 什么是sql server中的 'where 1=1'和 'where null=null'

mysql - mysql连接三张表

php - 单击时从数据库中删除

.net - Linq to SQL 缓存依赖