想将表中的一个字段加密,如何做呢?
搜索了好多,现在知道有三个函数,encrypt pwdencrypt pwdcompare
我这样做了,想将原来的密码用这个函数修改:
update table set passwd = encrypt(passwd)
passwd 是字段名,table 是表名。
这样改了以后,密码变了,请教大家,如何做呢?
可以在数据表中直接处理吗?
搜索了好多,现在知道有三个函数,encrypt pwdencrypt pwdcompare
我这样做了,想将原来的密码用这个函数修改:
update table set passwd = encrypt(passwd)
passwd 是字段名,table 是表名。
这样改了以后,密码变了,请教大家,如何做呢?
可以在数据表中直接处理吗?
Insert #users(1,varbinary(255),pwdencrypt('mypassword')
Declare @pwd varbinary(255)
select @pwd = pwd from #users where userId = 1
If pwdcompare('mypassword',@pwd) = 1
print 'true'
else
print 'false'
实在不好意思,我运行时有错误。
还有就是我的表结构是这样的:
CREATE TABLE [Da_user] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[username] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[password] [binary] (20) NULL ,
[purview] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[userlogin] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[bz] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
原来password是varchar类型的,现在我改成了binary类型
已经可以保密了,但是如果再改回varchar类型,又可以看到密码了。
也就是说可以将password这个字段直接显示成密文吗?也就是说即便是varchar类型,也是看不到明文的,可以实现吗?
Create table #users(userId int,pwd varbinary(255))
GO
Insert #users values(1,convert(varbinary(255),pwdencrypt('mypassword')))
Declare @pwd varbinary(255)
select @pwd = pwd from #users where userId = 1
If pwdcompare('mypassword',@pwd) = 1
print 'true'
else
print 'false'
另外由于pwdcompare函数是用varbinary类型进行比较的,所以还是使用varbinary来得简单。