Sql Server简单加密与解密 【转】
前言:
在SQL Server 2005和SQL Server 2008之前。如果希望加密敏感数据,如财务信息、工资或身份证号,必须借助外部应用程序或算法。SQL Server 2005引入内建数据加密的能力,使用证书、密钥和系统函数的组合来完成。
与数字证书类似。SQL Server 证书包括公钥和私钥这一对密钥,它们都用来加密和解密数据。SQL Server也拥有创建非对称密钥和对称密钥对象的能力。非对称密钥(asymmetric key)与证书相似,公钥用来加密数据库,私钥用来解密数据。非对称密钥和证书都提供了强大的加密强度。但在完成复杂的加密|解密过程中具有更多的性能开销。更适合对大量数据进行加密,且具有较低性能开销的解决方案是对称密钥(symmetric key),它是对相同数据进行加密和解密的一个密钥。
SQL Server允许将这些加密能力放到加密层次结构中。当安装了SQL Server后,在数据库master中创建名为服务主密钥的服务器级别证书,并将其默绑定到SQL Server服务账号登录名。服务主密钥用来加密所有其他数据库证书和创建在SQL Server实例中的密钥。另外,你也可以在用户数据库中创建数据库主密钥(Database Master Key),它可以用来加密数据库证书和密钥。
在SQL Server 2008中,微软引入了透明数据加密(TDE),它对整个数据库进行加密,而不需要修改任何访问它的应用程序。数据、日志文件和相关的数据库备份都是加密的。假如数据库被偷,如果没有数据库加密密钥(DEK)是不能访问数据的。
一、通过通行短语(PassPhrase)加密
对于不涉及证书及密钥的应急的数据加密,可以直接基于用户提供的密码来加密和解密数据。通行短语(PassPhrase)是允许存在空格的密码。这个PassPhrase不会存储在数据库中,因而也就意味着不会被使用存储的系统数据“破解”。同时,可以使用空格创建一个长的、易于记忆的句子来加密和解密敏感数据。
我们需要了解的一对函数是
ENCRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms190357.aspx)
DECRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms188910.aspx)
这一对函数必须使用相同的参数。
我们看一个示例:
CREATE FUNCTION dbo.EncryptByPassPhrasePwd(@password nvarchar(50))
RETURNS varbinary(max)
AS
BEGIN
declare @pwd varbinary(max)
'1234567',
@password)
return @pwd
END
---------解密函数----------
CREATE FUNCTION dbo.DecryptByPassPhrasePwd(@password varbinary(max))
RETURNS nvarchar(max)
AS
BEGIN
declare @pwd nvarchar(max)
return @pwd
END
select dbo.DecryptByPassPhrasePwd(0x010000004779C35F96DACC0EC6A8C518E186D203B1A336EE5B8A51B4271B54F56F516ECE) as result
Sql Server简单加密与解密 【转】的更多相关文章
- 解密SQL SERVER 2005加密存储过程,函数
在SQL SERVER 2005中必须用专用管理连接才可以查看过程过程中用到的表 EG:sqlcmd -A 1>use test 2>go 1>sp_decrypt 'p_testa ...
- 备忘DES带向量的加密和解密与DES简单加密与解密
package com.ego.util; import java.security.Key; import java.security.SecureRandom; import java.secur ...
- 备忘DES简单加密与解密
package com.ego.util; import java.io.IOException; import java.security.SecureRandom; import javax.cr ...
- 小试SQL SERVER 2014 加密备份
数据库加密: http://blog.csdn.net/u012992506/article/details/25283035 create master key encrypti ...
- Linux下实现 OpenSSL 简单加密与解密字符串
场景 shell脚本中存在明文密码 客户要求禁止使用明文密码,密码做加密处理. 方案 在网上了解到了Linux OpenSSL加密解密工具 可以指定各种加密算法为字符,文件做加密处理. 加密的案例比较 ...
- SQL Server使用加密连接SSL/TLS (转载)
说明 应用程序通过未加密的通道与数据库服务器通信, 这可能会造成重大的安全风险.在这种情况下, 攻击者可以修改用户输入的数据, 甚至对数据库服务器执行任意 SQL 命令.例如,当您使用以下连接字符串时 ...
- Sql Server 简单查询 异步服务器更新语句
//结构:select 子句 [into 子句] from 子句 [where 子句] [group by 子句] [having 子句] [order by 子句] select dept_c ...
- Asp.Net中对操作Sql Server 简单处理的SqlDB类
好久不接触这些闲暇时间回顾一下以前的基础.因为平常使用的时候都是直接调用SqlDB.dll这个类.先看这个类的结构 纸上得来终觉浅,绝知此事要躬行.个人觉得里面的标准操作就是对数据库增删查改 .特别适 ...
- spring mvc+mybatis+sql server简单配置
context.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu ...
随机推荐
- Xamarin iOS教程之申请付费开发者账号下载证书
Xamarin iOS教程之申请付费开发者账号下载证书 Xamarin iOS使用真机测试应用程序 在讲解iOS Simulator时,已经提到了虽然iOS Simulator可以模仿真实的设备,但是 ...
- 修改无线wifi网络名称。注册表。windows 无线属性 windows 无线 配置文件
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha windows 无线属性 windows 无线 配置文件 ======= 修改完成,之后 ...
- 图的基本操作(基于邻接表):图的构造,深搜(DFS),广搜(BFS)
#include <iostream> #include <string> #include <queue> using namespace std; //表结点 ...
- Spring boot整合jsp
这几天在集中学习Spring boot+Shiro框架,因为之前view层用jsp比较多,所以想在spring boot中配置jsp,但是spring boot官方不推荐使用jsp,因为jsp相对于一 ...
- java并发基础(六)--- 活跃性、性能与可伸缩性
<java并发编程实战>的第9章主要介绍GUI编程,在实际开发中实在很少见到,所以这一章的笔记暂时先放一放,从第10章开始到第12章是第三部分,也就是活跃性.性能.与测试,这部分的知识偏理 ...
- 如何快速将Linux文件系统迁移到Azure存储
概述 前一段时间一直在给一个客户将原先搭载在Linux(客户使用的是CentOS 7.0)上的NFS快速迁移到Azure存储上,并且为了保证数据完整性还需要另开一个存储做冷备,架构图如下: 通过Cli ...
- LPC43xx双核笔记
简介本页提供了一些使用LPC43xx器件双核特性的基本信息.此页面上的信息和专题使用Keil uVision4工具,以双核工程的使用来演示.该工程初始化两个内核以运行FreeRTOS,并采用三色LED ...
- IAR EWAR 内联汇编 Error[Og010], Error [Og005], Error [Og006]
Error [Og005] + [Og006] when using inline assembler EW targets: 430, ARM, AVR EW component: C/C++ co ...
- AES CBC/CTR 加解密原理
So, lets look at how CBC works first. The following picture shows the encryption when using CBC (in ...
- ElasticSearch-.net平台下c#操作ElasticSearch详解
ElasticSearch系列学习 ElasticSearch第一步-环境配置 ElasticSearch第二步-CRUD之Sense ElasticSearch第三步-中文分词 ElasticSea ...