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

 我来答
依然特雷西sky
高粉答主

2020-05-22 · 繁杂信息太多,你要学会辨别
知道答主
回答量:1511
采纳率:33%
帮助的人:66万
展开全部

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

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

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

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

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

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

百度网友a2546cf
高能答主

2020-01-02 · 有什么不懂的尽管问我
知道小有建树答主
回答量:1610
采纳率:100%
帮助的人:35.2万
展开全部

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

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2017-11-28
展开全部
在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加密串。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式