【发布时间】:2015-07-16 01:01:50
【问题描述】:
create procedure SP_INS_PUBLIC_NHANVIEN
@manv varchar(20),
@hoten nvarchar(100),
@email varchar(20),
@luongcb varbinary ,
@tendn nvarchar(100),
@mk varchar
as
create asymmetric key mahoaluongi
with algorithm = RSA_512
encryption by password = @mk
insert into nhanvien values (@manv,@hoten,@email,ENCRYPTBYASYMKEY(mahoaluongi,@luongcb),@tendn,HASHBYTES('SHA1',@mk),@manv)
drop asymmetric key mahoaluongi
go
我想每次使用新密码创建一个新的非对称密钥,从存储过程的参数传递。 我收到一个错误
@mk 附近的语法不正确。期待 STRING 或 TEXT_LEX。
但是使用cast 或convert 将varchar 转换为STRING 是不可能的。
我使用的是 SQL Server 2014
【问题讨论】:
-
旁注:您应该不为您的存储过程使用
sp_前缀。微软有reserved that prefix for its own use (see Naming Stored Procedures),你确实会在未来某个时候冒着名称冲突的风险。 It's also bad for your stored procedure performance。最好只是简单地避免sp_并使用其他东西作为前缀 - 或者根本不使用前缀! -
每次将新记录插入
nhanvien然后删除它时创建一个新的非对称密钥并不是一个好主意。之后你将如何解密数据? -
@ughai 我使用 _mk 作为密码来登录并加密另一列。因此我需要在存储过程中对其进行加密
标签: sql sql-server stored-procedures encryption sql-server-2014