SQL SERVER 2005 加密解密数据
应用SQL Server 2005的数据加密功能实现对敏感数据的保护。
对称加密
--======================================================================
/*
Create Symmetric Encryption by password
*/
--======================================================================
DECLARE @PSW1 NVARCHAR(400),
@PSW2 NVARCHAR(400)
SET @PSW1 = 'TestKeyPsw';
SET @PSW2 = 'TestKeyPswNew'
--Create Symmetric
/*
CREATE SYMMETRIC KEY Symmetric_Key_Test
--AUTHORIZATION User2
WITH ALGORITHM = RC4 --option: DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128 | DESX | AES_128 | AES_192 | AES_256
ENCRYPTION BY PASSWORD = 'TestKeyPsw'
*/
--modify Symmetric Encryption password. In actually, it can only add or drop, if you want to modify, just add a new and drop the old one
/*
EXEC ('Open Symmetric Key Symmetric_key_Test DECRYPTION by Password=N'''+ @PSW1 +''';')
ALTER SYMMETRIC KEY Symmetric_key_Test
ADD ENCRYPTION BY PASSWORD = N'TestKeyPswNew';
-- DROP ENCRYPTION BY PASSWORD = N'TestKeyPsw';
*/
--DROP Symmetric Key
/*
DROP SYMMETRIC KEY Symmetric_Key_Test
*/
--EXEC ('Open Symmetric Key Symmetric_key_Test DECRYPTION by Password=N''TestKeyPsw'';')
--SELECT * FROM sys.openkeys
/*
-- create a temptable to test
CREATE TABLE #tempTable
(
desction VARBINARY(4000)
)
TRUNCATE TABLE #tempTable
INSERT INTO #tempTable
select encryptbykey(key_guid('Symmetric_key_Test'), CONVERT(NVARCHAR(MAX),'123456'))
*/
EXEC ('Open Symmetric Key Symmetric_key_Test DECRYPTION by Password=N'''+ @PSW1 +''';')
SELECT desction,CONVERT(nvarchar(max), DecryptByKey(desction))AS DecryptByKeyDesction FROM #tempTable
--------------------------------------------------------------------------------------------------------
非对称加密
--======================================================================
/*
Create Asymmetric Encryption by password
*/
--======================================================================
--Create Asymmetric
/*
CREATE ASYMMETRIC KEY Asymmertric_key_Test
WITH ALGORITHM = RSA_2048 --option: RSA_512 | RSA_1024 | RSA_2048
ENCRYPTION BY PASSWORD = N'TestKeyPsw';
*/
--modify Asymmetric password
/*
ALTER ASYMMETRIC KEY Asymmertric_key_Test
WITH PRIVATE KEY (
DECRYPTION BY PASSWORD = 'TestKeyPsw', --old password
ENCRYPTION BY PASSWORD = 'TestKeyPswNew'); --new password
*/
--DROP Asymmetric Key
/*
DROP ASYMMETRIC KEY Asymmertric_key_Test
*/
--SELECT * FROM sys.asymmetric_keys_Test
/*
-- create a temptable to test
CREATE TABLE #tempTable
(
desction VARBINARY(4000)
)
TRUNCATE TABLE #tempTable
INSERT INTO #tempTable VALUES (EncryptByAsymKey(AsymKey_ID( 'Asymmertric_key_Test'), N'123456'))
*/
SELECT desction,CONVERT(NVARCHAR(1000),DecryptByAsymKey( AsymKey_Id( 'Asymmertric_key_Test'), desction, N'TestKeyPsw')) as DecryptDesction
FROM #tempTable
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构