sql server中怎么给数据库表中的用户密码加密

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server中怎么给数据库表中的用户密码加密相关的知识,希望对你有一定的参考价值。

1、首先我们电脑上要安装有SQL Server,然后要准备一个MDF数据库文件。打开SQL Server。

2、点开数据库这一级,右键点击数据库然后选择-所有任务-附加数据库-附加数据库。

3、在弹出界面上点击…按钮,然后找到准备好的MDF数据库文件的存放位置。

4、找到之后选择MDF数据库文件,并点击确定按钮。

5、窗口自动关闭后你就会发现,数据库已经附加上了。

6、如果想把这个数据库去掉的话,那就右键该数据库(比如刚刚附加的数据库)选择所有任务—分离数据库—确定。

参考技术A

1、测试使用SQL Servre 2012 R2,创建如下的数据表:

--创建测试用的用户表

CREATE TABLE TBLUser 

(    

    Name             nvarchar(30),     

    Password         varbinary(1000),    

)

GO

2、创建数据库主密钥

数据库主密钥(Database Master Key)在服务主密钥之下,由服务主密钥进行加密。这是一个数据库级别的密钥,可以用于为创建数据库级别的证书或非对称密钥提供加密。每一个数据库只能有一个数据库主密钥,通过T-SQL语句创建。具体代码如下:

--创建数据库主密钥

CREATE MASTER KEY ENCRYPTION BY PASSWORD ='passW@ord'

GO

3、创建证书

创建一个用来加密对称秘钥证书,具体代码如下:

--创建证书

CREATE CERTIFICATE TestCert with SUBJECT = 'Test Certificate'

GO

4、创建一个对称秘钥

由SQL Server加密层次结构可以看出,对称密钥可以通过密码创建,也可以通过其它对称密钥、非对称密钥和证书创建。本文以证书创建一个测试用的对称秘钥,具体代码如下:

--创建对称密钥

CREATE SYMMETRIC KEY TestSymmetric WITH ALGORITHM = AES_256

    ENCRYPTION BY CERTIFICATE TestCert 

GO

5、加密数据

先打开证对称秘钥,再使用ENCRYPTBYKEY函数加密数据,完成后关闭对称秘钥。具体代码如下:

--使用对称秘钥加密数据

OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;

INSERT INTO TBLUser values('张三', ENCRYPTBYKEY(Key_Guid(N'TestSymmetric'), '123456'));

CLOSE SYMMETRIC KEY TestSymmetric;

GO

6、查看加密后的数据

直接下SQL查询加密后的数据,可以看到password的内容是一串不可以阅读的16进制的字符。

--查看加密后的数据

SELECT * FROM TBLUser

GO

7、解密数据

先打开证对称秘钥,再使用DecryptByKey函数解密数据,完成后关闭对称秘钥。具体代码如下:

--解密数据

OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;

SELECT Name, CAST(DecryptByKey(password) as varchar(100)) Password FROM TBLUser;

CLOSE SYMMETRIC KEY TestSymmetric;

GO

参考技术B 在SQl2005下自带的函数hashbytes() ,此函数是微软在SQL SERVER 2005中提供的,可以用来计算一个字符串的 MD5 和 SHA1 值,使用方法如下:
--获取123456的MD5加密串
select hashbytes('MD5', '123456') ;
--获取123456的SHA1加密串
select hashbytes('SHA1', '123456') ;有了这个函数可以在sqlserver中为字符串进行加密,但是hashbytes() 函数的返回结果是 varbinary类型,(以 0x 开头 16 进制形式的二进制数据)通常情况下,我们需要的都是字符串型的数据,很多人首先想到的可能就是用 CAST 或 Convert 函数将varbinary 转换为 varchar,但这样转换后的结果会是乱码,正确转换 varbinary 可变长度二进制型数据到 16 进制字符串应该使用系统内置函数 sys.fn_varbintohexstr()(只在sqlserver2005下有),如下所示:select sys.fn_varbintohexstr(hashbytes('MD5', '123456'))
然后就可以截取需要的部分select lower(right(sys.fn_varbintohexstr(hashbytes('MD5','123456')),32))为md5加密串。

sql server2008怎么给一张表加一个用户

有时候我们要对数据库进行权限管理,防止有人误操作或者窃取数据,那么小编这篇文章就是实现这个的操作过程。

百度经验:jingyan.baidu.com

工具/原料

 
  • sql server2008数据库
  • 电脑

百度经验:jingyan.baidu.com

方法/步骤

 
  1. 1

    1.打开数据库,进入--安全性--登录名--新建登录名

  2. 2

    2.在常规这个选项卡中,创建登陆名,并设置默认的数据库

  3. 3

    3.在用户映射这个选项中,单击勾选你需要设置的数据库,然后设置架构,单击确认,这样就完成了创建用户的操作

  4. 4

    4.这样我们就可以对Test这个数据库中的User表进行权限的设置了,选择 表--属性

  5. 5

    5.在权限这个选项卡中,按顺序单击击   添加--浏览--选择对象

  6. 6

    6.单击确认后,我们就可以下面的列表中找到对应的权限,单击确认就完成了这些权限的设置了

  7. 7

    7.最后我们登陆下看看就ok了

    END

以上是关于sql server中怎么给数据库表中的用户密码加密的主要内容,如果未能解决你的问题,请参考以下文章

sql server2008怎么给一张表加一个用户

sql server中怎么给表中增加一列?

SQL server怎么在更新数据的时候让字段自动加1,

在Action中查询出SQL SERVER表的数据,返回一个list。怎么在JSP页面中使用Struts标签,显示出表中的内容?

将用户定义表中的日期值传递给 SQL Server 2008 存储过程

SQL server 2000数据库的用户sa的密码忘了怎么办