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
我想每次都創建一個新的非對稱密鑰,並從存儲過程的參數傳遞。 我得到一個錯誤使用可變密碼在SQL中創建非對稱密鑰(來自存儲過程)
@mk附近的語法不正確。期待STRING或TEXT_LEX。
但是使用cast
或convert
從varchar轉換爲STRING是不可能的。
我使用SQL Server 2014
旁註:你應該** **不使用'sp_'前綴爲您的存儲過程。微軟已經保留了這個前綴以供自己使用(參見*命名存儲過程*)](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx),以及你將來有可能冒着名字衝突的風險。 [這對你的存儲過程性能也是不利的](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)。最好只是簡單地避免使用'sp_'並將其他內容用作前綴 - 或者根本沒有前綴! –
每次在nhanvien中插入新記錄然後刪除它時,創建一個新的非對稱密鑰並不是一個好主意。以後如何解密數據? – ughai
@ughai我使用_mk作爲密碼來登錄並加密另一列。因此,我需要在存儲過程 –