关于SQL Server加密与解密的问题
程序员文章站
2022-11-18 10:28:47
一、passphrase加密1.1、概要简述1)对于不涉及证书及密钥的应急的数据加密,可以直接基于用户提供的密码来加密和解密数据。2)通行短语(passphrase)是允许存在空格的密码。这个pass...
一、passphrase加密
1.1、概要简述
1)对于不涉及证书及密钥的应急的数据加密,可以直接基于用户提供的密码来加密和解密数据。
2)通行短语(passphrase)是允许存在空格的密码。这个passphrase不会存储在数据库中,因而也就意味着不会被使用存储的系统数据"破解"。同时,可以使用空格创建一个长的、易于记忆的句子来加密和解密敏感数据。
3)passphrase支持的数据列类型有nvarchar、varchar、nchar、char、varbinary、binary。
1.2、加密函数
create function dbo.encryptpass(@enpass varchar(32)) returns varbinary(max) as begin declare @result varbinary(max) set @result=encryptbypassphrase('helloworld',@enpass) return @result end
1.3、解密函数
create function dbo.decryptpass(@depass varbinary(max)) returns varchar(32) as begin declare @result varchar(32) set @result=convert(varchar,decryptbypassphrase('helloworld',@depass)) return @result end
1.4、结果测试
select dbo.encryptpass('测试字符串') as result select dbo.decryptpass(0x0100000045fe8873d07bfb747d33d81d1c1e06ca3ec10d718cf603e395d4493bfbfc5683) as result select dbo.decryptpass(dbo.encryptpass('测试字符串')) as result
1.5、执行结果
二、证书加密
2.1、概要简述
1)证书可以在数据库中加密和解密数据。
2)证书包含密钥对、证书拥有者的信息、证书可用的开始和结束过期日期,同时还包含公钥和密钥,前者用来加密,后者用来解密。
3)sql server可以生成它自己的证书,也可以从外部文件或程序集载入。证书比非对称密钥更易于移植,可以在数据库中很方便地重用。
2.2、创建证书
create certificate testcert encryption by password='helloworld' with subject='hello world', start_date='2021-01-20', expiry_date='2021-12-31'
2.3、加密函数
create function dbo.encryptcert(@enpass varchar(32)) returns varbinary(max) as begin declare @result varbinary(max) set @result=encryptbycert(cert_id('testcert'),@enpass) return @result end
2.4、解密函数
create function dbo.decryptcert(@depass varbinary(max)) returns varchar(32) as begin declare @result varchar(32) set @result=convert(varchar,decryptbycert(cert_id('testcert'),@depass,n'helloworld')) return @result end
2.5、结果测试
select dbo.encryptcert('测试字符串') as result select dbo.decryptcert(0x836021834d8d25e4dad0cd26767a77a7fff9ce9bdca7bde72e418118db58dfb8af6325b7a9d1d6c2d5d43800120a5c5d212bc4a645d10a065a147c5e97b419daf6dc203598e376ae4a520b45d145f2c2a6bae23b49ad3ea45bdaac1fbd78e8402195dda0842ca5a89942d03c5d7b82f7e8241d8bd698115c78cebd5ac0066c6c) as result select dbo.decryptcert(dbo.encryptcert('测试字符串')) as result
2.6、执行结果
到此这篇关于关于sql server加密与解密的问题的文章就介绍到这了,更多相关sql server加密与解密内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
SQL Server中的SQL语句优化与效率问题
-
SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试
-
关于SQL Server加密与解密的问题
-
解密新型SQL Server无文件持久化恶意程序的问题
-
详解SQL Server中的事务与锁问题
-
关于 MongoDB 与 SQL Server 通过本身自带工具实现数据快速迁移 及 注意事项 的探究
-
关于SQL Server 2017中使用json传参时解析遇到的多层解析问题
-
sql server-急!!!请教关于MySQL 与SQLserver2008R2数据库问题!
-
SQL Server中修改“用户自定义表类型”问题的分析与方法
-
【转帖】关于sql server 2008 的mdf收缩问题