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

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

(0)

相关推荐

  • SQL Server储过程加密和解密原理深入分析

    开始: -------------------------------------------------------------------------------- 在网络上,看到有SQL Server 2000和SQL Server 2005 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的.后来自己根据实际的应用环境,编写了两个存储过程,一个加密存储过程(sp_EncryptObject),和一个解密存储过程(sp_EncryptObject),它们可以应用于S

  • SQLSERVER对加密的存储过程、视图、触发器进行解密(推荐)

    加密测试的存储过程 IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE TYPE='P' AND NAME='P_TEST') DROP PROCEDURE P_TEST GO CREATE PROCEDURE P_TEST(@USERNAME VARCHAR(20),@MSG VARCHAR(20) OUTPUT) WITH ENCRYPTION AS BEGIN IF(SELECT COUNT(1) FROM Custs WHERE NAME=@USERNAME

  • SQLSERVER加密解密函数(非对称密钥 证书加密 对称密钥)使用方法代码

    ENCRYPTBYASYMKEY() --非对称密钥ENCRYPTBYCERT()   --证书加密ENCRYPTBYKEY()   --对称密钥ENCRYPTBYPASSPHRASE()  --通行短语(PassPhrase)加密 复制代码 代码如下: --SQLSERVER中的加密函数 2013-7-11ENCRYPTBYASYMKEY() --非对称密钥ENCRYPTBYCERT()   --证书加密ENCRYPTBYKEY()   --对称密钥ENCRYPTBYPASSPHRASE() 

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

    一.PassPhrase加密 1.1.概要简述 1)对于不涉及证书及密钥的应急的数据加密,可以直接基于用户提供的密码来加密和解密数据. 2)通行短语(PassPhrase)是允许存在空格的密码.这个PassPhrase不会存储在数据库中,因而也就意味着不会被使用存储的系统数据"破解".同时,可以使用空格创建一个长的.易于记忆的句子来加密和解密敏感数据. 3)PassPhrase支持的数据列类型有nvarchar.varchar.nchar.char.varbinary.binary.

  • 实例讲解SQL Server加密功能

    SQL Server中加密是层级的,每一个上层为下提供保护.如图: 实例: /** SMK(Service Master Key)在SQL Server安装时生成,由Windows DPAPI(Data Protection API)提供保护 **/ /**创建数据库级别DMK(Database Master Key),受SMK保护**/ create master key encryption by password=N'Passw0rd' go /**数据库内的加密对象受DMK保护 支持的对

  • SQL Server存储过程的基础说明

    可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程). 也可以创建在Microsoft SQL Server启动时自动运行的存储过程. 语法 CREATE PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ] [ WITH { RECOMPILE | ENCRY

  • SQL Server 2008中的代码安全(三) 通过PassPhrase加密

    前言: 在SQL Server 2005和SQL Server 2008之前.如果希望加密敏感数据,如财务信息.工资或身份证号,必须借助外部应用程序或算法.SQL Server 2005引入内建数据加密的能力,使用证书.密钥和系统函数的组合来完成. 与数字证书类似.SQL Server 证书包括公钥和私钥这一对密钥,它们都用来加密和解密数据.SQL Server也拥有创建非对称密钥和对称密钥对象的能力.非对称密钥(asymmetric key)与证书相似,公钥用来加密数据库,私钥用来解密数据.非

  • SQL Server 2008中的代码安全(八)透明加密(TDE)

    当一个用户数据库可用且已启用TDE时,在写入到磁盘时在页级实现加密.在数据页读入内存时解密.如果数据库文件或数据库备份被盗,没有用来加密的原始证书将无法访问.这几乎是SQL Server2008安全选项中最激动人心的功能了,有了它,我们至少可以将一些初级的恶意窥视拒之见外. 下面的两个例子将展示如何启用和维护透明数据加密. 示例一.启用透明加密(TDE) /********************TDE**************** 3w@live.cn ****************/ U

  • 揭秘SQL Server 2014有哪些新特性(4)-原生备份加密

    SQL Server 2014 CTP2之后公布了一项针对备份的特性,那就是原生备份加密.考虑到之前网络上影响很坏的数据库泄漏事件,本质上都是数据库备份泄漏给第三方导致,SQL Server的原声数据备份可以使得即使备份本身被盗,在没有加密证书的情况下也无法使用,这有效的解决了上述数据泄漏问题.原先的解决方案 在SQL Server 2014之前,如果希望实现对备份实现加密,会通过如下两种方式之一实现: 使用透明数据加密(TDE)加密整个数据库,从而使得备份和事务日志也会被加密 使用第三方备份加

  • 解密新型SQL Server无文件持久化恶意程序的问题

    近期,阿里云云安全中心基于全新的深度威胁检测功能,监测到云上部分用户的 SQL Server 数据库内部隐藏着一种新型的持久化后门程序. 攻击者利用弱口令不严谨配置,以非常简单的攻击方法进入数据库,即可植入该后门,更致命的是,该后门高度隐蔽和持久化控制的特性,让发现和清除变得困难. 威 胁 特 点 植入简单 利用数据库弱密码或不严谨配置,攻击者只需简单的弱口令利用,即可轻松登录进用户的数据库植入该后门程序; 高度隐蔽 该后门完全隐藏在SQL Server数据库进程内部,无文件落地.无额外进程,运

  • SQL Server 2008中的代码安全(六) 对称密钥加密

    证书和非对称密钥使用数据库级的内部公钥加密数据,并且使用数据库级内部私钥解密数据.而对称密钥相对简单,它们包含一个同时用来加密和解密的密钥.困此,使用对称密钥加密数据更快,并且用在大数据时更加合适.尽管复杂度是考虑使用它的因素,但它仍然是一个很好的加密数据的选择. 我们看一组例子: 示例一.创建对称密钥 对称密钥的特性是:在数据库会话中使用它对数据进行加密和解密前必须首先打开. 创建对称密钥使用如下命令:CREATE SYMMETRIC KEY  创建对称密钥.(http://msdn.micr

  • SQL Server错误代码大全及解释(留着备用)

    SQLSTATE SQL SERVER 驱动程序错误 描述  HY000 所有绑定列都是只读的. 必须是可升级的列,以使用 SQLSetPos 或 SQLBulkOperations 更改或插入行. HY000 已检测到一个旧 netlib (%s).请删除并重新启动应用程序. 正在装载的 netlib 已过期.驱动程序请求一个较新的 netlib.问题可能出在应用程序当前目录中的 netlib,正在装载的是这个 netlib,而不是系统目录中的那个.也可能是该 netlib 安装不当或已损坏.

随机推荐