如何传递对称密钥进行查询

问题描述 投票:0回答:1

我想知道如何将对称密钥作为参数传递给 SQL 查询。

我通常在查询中对其进行硬编码,如下所示:

OPEN SYMMETRIC KEY SymKey
DECRYPTION BY CERTIFICATE CertiFi;

SELECT * FROM MasterBlaster

CLOSE SYMMETRIC KEY SymKey

但我想将它作为参数传递。

sql-server azure sql-server-2008 sql-server-2005
1个回答
0
投票

根据https://learn.microsoft.com/en-us/sql/t-sql/statements/open-symmetry-key-transact-sql?view=sql-server-ver16你不能使用参数或 OPEN KEY 语句中的变量。一种方法是:

declare @key nvarchar(100) = 'test'
, @sql nvarchar(max)

set @sql = N'
OPEN SYMMETRIC KEY ' + QUOTENAME(@key) + N'
DECRYPTION BY CERTIFICATE CertiFi;

SELECT * FROM MasterBlaster;

CLOSE SYMMETRIC KEY ' + QUOTENAME(@key) + N';'
EXEC SP_EXECUTESQL @SQL

注意,你必须小心sql注入,因此使用QUOTENAME

© www.soinside.com 2019 - 2024. All rights reserved.