欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于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、执行结果

关于SQL Server加密与解密的问题

二、证书加密

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加密与解密内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!