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

来源:脚本之家  责任编辑:小易  

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

您可能感兴趣的文章:SQLSERVER对加密的存储过程、视图、触发器进行解密(推荐)SQLSERVER加密解密函数(非对称密钥 证书加密 对称密钥)使用方法代码SQL Server储过程加密和解密原理深入分析

  • 本文相关:
  • sql server约束增强的两点建议
  • 在sql查询中使用表变量
  • sql server数据库安装时常见问题解决方案集锦
  • sqlserver 数据库被注入解决方案
  • 很有意思的sql多行数据拼接
  • replace关键字的妙用查询是否包含某个特定字符串
  • 强制sql server执行计划使用并行提升在复杂查询语句下的性能
  • 浅析sql server 聚焦索引对非聚集索引的影响
  • sql中的isnull函数使用介绍
  • 更改sql server更改当前数据库的所有者:sp_changedbowner
  • 如何对sqlserver2005数据库中表字段进行加密,解密?
  • c# sqlserver 数据加密解密
  • SQLSERVER存储过程加密后,是不是任意版本都可以很...
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页sqlserver对加密的存储过程、视图、触发器进行解密(推荐)sqlserver加密解密函数(非对称密钥 证书加密 对称密钥)使用方法代码sql server储过程加密和解密原理深入分析sql server约束增强的两点建议在sql查询中使用表变量sql server数据库安装时常见问题解决方案集锦sqlserver 数据库被注入解决方案很有意思的sql多行数据拼接replace关键字的妙用查询是否包含某个特定字符串强制sql server执行计划使用并行提升在复杂查询语句下的性能浅析sql server 聚焦索引对非聚集索引的影响sql中的isnull函数使用介绍更改sql server更改当前数据库的所有者:sp_changedbownersql server 2012 安装图解教程(附sql server数据库入门学习总结microsoft sql server 2012 数据win7系统安装sqlserver2000的详细sql重复记录查询的几种方法sqlserver中distinct的用法(不重sql server错误代码大全及解释(sql-order by 多字段排序(升序、sql将一个表中的数据插入到另一个用sql语句添加删除修改字段、一些学习sql语句(强大的group by与select fro一个完整的sql server数据库全文索引的示sql_server全文索引的使用实例演示游标删除多个表里脏数据的方法详解sqlserver 表达式(expression)asp.net中如何调用sql存储过程实现分页sqlserver主键设计的注意点关于sql 存储过程入门基础(变量)sql学习第一天——sql union 和 union alsql server使用merge语句当源表数据集为空
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved