关于sql的对称性密钥和非对称性密钥(基础)

首先谈一下自己的理解,密钥我们都知道是对我们所知道的某一个事物进行加密。先讲一下对称性密钥,如果我们对一个数据库中的一个表的某些元素进行加密的时候,所用的加密密码和解密的密码是一致的,而非对称性密钥则刚好是相反的。

我们具体看下怎样对一个我们想要加密的表数据进行加密和解密。

1、加密一个数据库中的表的信息
2、建master Key:
 CREATE MASTER KEY ENCRYPTION BY PASSWORD = ‘[email protected]‘;
用于加密数据库主密钥的密码
数据库主密钥是指用于保护证书私钥的对称密钥以及数据库中存在的非对称密钥。 当创建主密钥时,会使用 AES_256 算法以及用户提供的密码对其进行加密。 在 SQL Server 2008 和 SQL Server 2008 R2 中,不使用 Triple DES 算法。 若要启用主密钥的自动解密功能,将使用服务主密钥对该主密钥的副本进行加密,并将副本存储在数据库和 master 中。 通常,每当主密钥更改时,便会在不进行提示的情况下更新存储在 master 中的副本。 可以使用 ALTER MASTER KEY 的 DROP ENCRYPTION BY SERVICE MASTER KEY 选项对该默认行为进行更改。 必须使用 OPEN MASTER KEY 语句和密码打开未使用服务主密钥进行加密的主密钥。
master 中 sys.databases 目录视图的 is_master_key_encrypted_by_server 列指示是否使用服务主密钥对数据库主密钥进行加密。
可以在 sys.symmetric_keys 目录视图中查看有关数据库主密钥的信息。

3、建表:Person
 CREATE TABLE Person
 (
 ContactID INT PRIMARY KEY,
 FirstName NVARCHAR(200),
 MiddleName NVARCHAR(200),
 LastName NVARCHAR(200),
 eFirstName VARBINARY(200),
 eMiddleName VARBINARY(200),
 eLastName VARBINARY(200),
 );
4、建证书:
 CREATE CERTIFICATE TestCertificate
 WITH SUBJECT = ‘Adventureworks Test Certificate‘,EXPIRY_DATE = ‘10/10/2009‘;
5、建对称key:
 CREATE SYMMETRIC KEY TestSymmetricKey
 WITH ALGORITHM = TRIPLE_DES
 ENCRYPTION BY CERTIFICATE TestCertificate;
 OPEN SYMMETRIC KEY TestSymmetricKey
 DECRYPTION BY CERTIFICATE TestCertificate;
6、向表Person中插入加密的数据
 INSERT
 INTO Person (ContactID, eFirstName, eMiddleName, eLastName)
 values(1,
 EncryptByKey(Key_GUID(‘TestSymmetricKey‘), ‘eFirstName‘),
 EncryptByKey(Key_GUID(‘TestSymmetricKey‘), ‘eMiddleName‘),
 EncryptByKey(Key_GUID(‘TestSymmetricKey‘), ‘eLastName‘)
 )
7、解密6中的数据
 UPDATE Person
 SET FirstName = CONVERT(varchar,DecryptByKey(eFirstName)),
 MiddleName = CONVERT(varchar,DecryptByKey(eMiddleName)),
 LastName = CONVERT(varchar,DecryptByKey(eLastName));
8、查看解密后的结果
 select Cast(DecryptByKey(eFirstName) as Varchar) FROM Person
9、删除以上的结构
 DROP TABLE Person;
 CLOSE SYMMETRIC KEY TestSymmetricKey;
 DROP SYMMETRIC KEY TestSymmetricKey;
 DROP CERTIFICATE TestCertificate;
 DROP MASTER KEY;
PS:EXPIRY_DATE是有效时间,要大于当前时间
这样创建之后我们看到相应的加密数据将会是乱码!

通过这个例子你可以很好的去理解关于加密的概念。关于具体的一些语句的运用规则这有一个网址

http://technet.microsoft.com/zh-cn/library/ms187798.aspx

时间: 2024-08-09 21:58:58

关于sql的对称性密钥和非对称性密钥(基础)的相关文章

对称密钥与非对称密钥算法

对称密钥算法和非对称密钥算法 密码学中两种常见的密码算法为对称密码算法(单钥密码算法)和非对称密码算法(公钥密码算法). 所谓对称密钥算法是指如果一个加密算法的加密密钥和解密密钥相同,或者虽然不相同,但是可由其中的任意一个很容易的推导出另一个,即密钥是双方共享的. 非对称密钥算法是指一个加密算法的加密密钥和解密密钥是不一样的,或者说不能由其中一个密钥推导出另一个密钥.这两个密钥其中一个称为公钥,用于加密,是公开的,另一个称为私钥,用于解密,是保密的.其中由公钥计算私钥是计算上不可行的. 这两种密

什么是私有密钥密码技术——密钥加密算法采用同一把密钥进行加密和解密

什么是私有密钥密码技术 私有密钥(Symmetric Key),又叫对称密钥.密钥加密算法采用同一把密钥进行加密和解密.它的优点是加密和解密速度非常快,但密钥的分发和管理比较困难.信息的发送者和接收者必须明确同一把密钥.因此,必须进行密钥交流,这通常需要其他更安全的信道来传送密钥.另外,每一对用户都需要有自己的一个独一无二的密钥.因此,如果一个发送者与很多人通信,就需要管理很多密钥.主要的对称密钥加密算法有DES.3DES.RC2.RC4.RC5.Blowtish和CAST等.在VPN中常用的有

coreos 创建使用密钥登陆的ubuntu 基础镜像

下载官方镜像 [email protected] ~ $ docker pull ubuntu:14.04 #假设官方下载较慢,可到www.dockerpool.com下载标准镜像 [email protected] ~ $ docker pull dl.dockerpool.com:5000/ubuntu:14.04 [email protected] ~ $ docker tag dl.dockerpool.com:5000/ubuntu:14.04 ubuntu:14.04 [email 

ssl证书的对称密钥与非对称密钥

(一)对称加密(Symmetric Cryptography) 对称密钥加密,又称私钥加密,即信息的发送方和接收方用一个密钥去加密和解密数据.它的最大优势是加/解密速度快,适合于对大数据量进行加密,对称 加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题.在发送密钥的过程中,密钥有很大的风险会被黑客们 拦截.现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越

tortoisegit密钥与git密钥配置

在客户端生成密钥并将公钥上传到服务器可以避免每次连接git服务器都要登录的尴尬. 但git的私钥是不能直接用在tortoisegit上的,需要用tortoisegit的puttygen转换一下,详细过程可见: http://blog.163.com/wangyg_hf/blog/static/181640374201210753740961/ 使用tortoisegit clone的时候需要指定生成的那个私钥,从而正确连接git.

对称密钥与非对称密钥

(一)对称加密(Symmetric Cryptography) 对称密钥加密,又称私钥加密,即信息的发送方和接收方用一个密钥去加密和解密数据.它的最大优势是加/解密速度快,适合于对大数据量进行加密,对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题.在发送密钥的过程中,密钥有很大的风险会被黑客们拦截.现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人. 对称加密通常使用的是相对较小的密钥,一般小于256 bit.因为密钥越大,

Linux安全之SSH 密钥创建及密钥登录,禁止密码登陆

//参考原文链接 他们有图哦https://blog.csdn.net/nahancy/article/details/79059135 http://www.runoob.com/w3cnote/set-ssh-login-key.html 首先进入Linux系统的用户目录下的.ssh目录下,root用户是/root/.ssh,普通用户是/home/您的用户名/.ssh,我们以root用户为例: cd /root/.ssh 执行ssh-keygen命令创建密钥对, ssh-keygen -t

Linux ssh密钥创建及密钥登录

创建密钥在命令行输入ssh-keygen -t rsa生成密钥在询问框中一路回车,会在/root/.ssh/ wen件夹下创建公钥id_rsa.pub和私钥id_rsa拷贝密钥使用命令拷贝公钥到服务器上ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]ssh-copy-id默认是22端口,如果端口不同,需要收到向/root/.ssh/authorized_keys文件中追加公钥使用cat /root/.ssh/id_rsa.pub >>

首次装Win8,安装过程中要输入安装密钥各种版本密钥如下,总有你需要的一种:

Windows 8密匙 - BN3D2-R7TKB-3YPBD-8DRP2-27GG4Windows 8 N N版密匙 - 8N2M2-HWPGY-7PGT9-HGDD8-GVGGYWindows 8 RT(ARM)正式版密匙 - DXHJF-N9KQX-MFPVR-GHGQK-Y7RKV Windows 8 Professional 密匙 - NG4HW-VH26C-733KW-K6F98-J8CK4Windows 8 Professional N 密匙- XCVCF-2NXM9-723PB-