加密

codayssss 2003-05-15 12:37:50
表中一列,当输入完比后,更新,就加密。(比如说用SQL的企业控制台进入输入)
怎么办?
...全文
25 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
wandering_guy 2003-05-17
  • 打赏
  • 举报
回复
各位,如果涉及到对汉字的加密怎么处理呢?
pengdali 2003-05-17
  • 打赏
  • 举报
回复
哦!看错!
你的pass列应该是:
passwd varbinary(256)
pengdali 2003-05-17
  • 打赏
  • 举报
回复
你的触发器写错了!!

CREATE TRIGGER 名 on 你的用户表
INSTEAD OF INSERT <<===========这里是这样写!!!!!
AS
BEGIN
INSERT INTO 表 SELECT 用户名,ENCRYPT(密码) FROM inserted
END
codayssss 2003-05-17
  • 打赏
  • 举报
回复
我打错了
select * from atest
codayssss 2003-05-17
  • 打赏
  • 举报
回复
CREATE TABLE [dbo].[atest] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[Name] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[Password] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
CREATE TRIGGER ENCRYPT_TRIGGER on atest
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO atest SELECT id,name,encrypt (password) FROM inserted
END
GO
insert into atest(name,password) values('yyy','yyy')
go
select * from a
go
结果:ID NAME PASSWORD
1 YYY YYY
为什么会这样?
joygxd 2003-05-17
  • 打赏
  • 举报
回复
大力
我都试了,我每次INSERT就会出现两条纪录
pengdali 2003-05-17
  • 打赏
  • 举报
回复
就是这样呀!,它被加了密:

你查询的时候用:

SELECT * from Users where UserID = '用户名' and UserPW = ENCRYPT('密码')
pengdali 2003-05-17
  • 打赏
  • 举报
回复
然后

你到你的“你的用户表”里去插入一个记录密码列 它就回给你加密
pengdali 2003-05-17
  • 打赏
  • 举报
回复
CREATE TRIGGER 名 on 你的用户表
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO 表 SELECT 用户名,ENCRYPT(密码) FROM inserted
END


joygxd 2003-05-17
  • 打赏
  • 举报
回复
我试了载触发器不好写,还是在前台做吧
codayssss 2003-05-17
  • 打赏
  • 举报
回复
to: pengdali(大力)
按的你方法做是可以加密,不过,可看到密码的第一个字母。
INSERT INTO USERS values('me',ENCRYPT('love'))
go

useid pass
me l

为什么会这样?
pengdali 2003-05-17
  • 打赏
  • 举报
回复
---------------------------替代触发器
CREATE TRIGGER 名 on 表
INSTEAD OF INSERT
AS
BEGIN
INSERT INTO 表 SELECT name1,name1 FROM inserted
END
joygxd 2003-05-17
  • 打赏
  • 举报
回复
我也觉得用触发器可以
当INSERT UPDATE DATA时就加密
Rewiah 2003-05-17
  • 打赏
  • 举报
回复
是否可以考虑触发器?在触发器变换??
codayssss 2003-05-17
  • 打赏
  • 举报
回复
to: pengdali(大力)
那也就是说,用语句来进行操作。能不能在SQL的企业控制台就可以完成我想要的。

TO: leimin(黄山光明顶)
改为varbinary的话,就不能修改了。

pengdali 2003-05-17
  • 打赏
  • 举报
回复
我都晕了~~ 对不起!你按下面做:
1.
CREATE TABLE Users ( UserID Varchar(10),Pass Varchar (20))

2.
CREATE TRIGGER 名 on Users
INSTEAD OF INSERT
AS
BEGIN
INSERT users SELECT userid,ENCRYPT(pass) FROM inserted
END
go

3.
INSERT INTO USERS values('TestUser1',ENCRYPT('TestPW4'))
44290029 2003-05-17
  • 打赏
  • 举报
回复
同意“愉快的登山者”
codayssss 2003-05-17
  • 打赏
  • 举报
回复
password 改为varbinary(256)
执行:
insert into atest(name,password) values('yyy','yyy')
go

服务器: 消息 260,级别 16,状态 1,行 1
不允许从数据类型 varchar 到数据类型 varbinary 的隐性转换(表 'Library.dbo.atest',列 'Password')。请使用 CONVERT 函数来运行此查询。

有没有办法可以,不使用insert into 语句,直接在SQL企业控制台进行加入。varbinary类型不能直接加入表格。
liuyun2003 2003-05-15
  • 打赏
  • 举报
回复
单单靠insert是不行的。应该用语句或者编写程序来处理。
happydreamer 2003-05-15
  • 打赏
  • 举报
回复
select pwdcompare('1234', password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END)) a,name
from master.dbo.sysxlogins


--SQL SERVER 本身也提代加密密码的函数:
--pwdencrypt ,pwdcompare


--加密:
declare @logintable table(username varchar(20),passwd varbinary(256))
insert @logintable(username,passwd) values('yourname',pwdencrypt('123456'))

declare @pwd varbinary(256)

select @pwd=passwd from @logintable where username='yourname'
--比较:
if pwdcompare('12356',@pwd)=1
print 'true'
else
print 'false'

select * from @logintable
加载更多回复(4)

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧