一個存儲過程AES加密我有一個SQL Server 2008中表類似於下面的結構:創建MS SQL Server 2008中
ID int PRIMARY KEY IDENTITY(1,1)
Name nvarchar(100)
LongText ntext
我想實現很簡單。在將數據插入此表之前,我想使用AES_192算法對LongText進行加密。我使用下面的SP對數據進行加密:
create proc sp_Encrypt_LongText
@rawText ntext = null,
@encryptedText nvarchar(max) output
as
begin
OPEN SYMMETRIC KEY Encryption_Symmetric_Key
DECRYPTION BY CERTIFICATE Encryption_Certificate WITH PASSWORD = 'mypassword'
set @encryptedText = ENCRYPTBYKEY(KEY_GUID(N'Encryption_Symmetric_Key'), cast(@rawText as nvarchar(max)))
CLOSE SYMMETRIC KEY Encryption_Symmetric_Key
end
和解密,我創建了以下SP:
alter proc sp_Decrypt_LongText
@encryptedText ntext = null,
@decryptedText varchar(max) output
as
begin
OPEN SYMMETRIC KEY Encryption_Symmetric_Key
DECRYPTION BY CERTIFICATE Encryption_Certificate WITH PASSWORD = 'mypassword'
set @decryptedText = cast(DECRYPTBYKEY(cast(@encryptedText as nvarchar(max))) as varchar(max))
CLOSE SYMMETRIC KEY Encryption_Symmetric_Key
end
的程序似乎當我使用exec命令做工精細。到現在爲止還挺好。問題在於使用存儲過程在表內插入和提取數據;一個用於插入和選擇。我有什麼截至目前如下:
對於插入:
create proc sp_InsertData
@Name nvarchar(100),
@LongText ntext = NULL
as
INSERT INTO TABLE tbl VALUES (@Name, @LongText)
有關讀取
create proc sp_FindDataById
@Id int
as
SELECT ID, Name, LongText from tbl where [email protected]
我的問題是,我怎麼插加密/解密程序在這些SPs內部讓他們工作?我已經看過幾篇文章來達到這個目的,但我一直在討論一個問題或另一個問題;主要是因爲ntext
數據類型。或者,也許我可能會在這裏走錯路。任何形式的幫助表示讚賞。 PS:由於DBA指定的某些原因,我無法將LongText
的數據類型從ntext
更改爲nvarchar
或varchar
。因此,所有的鑄件都應用在程序中。
輕微的彎路... HTTP://sqlperformance.com/2012/10/t-sql-queries/sp_prefix –
是上藥你的DBA?堅持使用ntext沒有任何理由。該數據類型已被棄用十多年,以支持nvarchar(max)。但我不太明白這裏的問題。 –
ypou將如何保護加密密鑰?你抵禦什麼樣的攻擊? – zaph