–写一个这样的函数就行了.
/*–加/解密字符串
@str 为加/解密的字符串
@pwdstr 为加/解密字符串的密钥
*/
if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[f_jmstr]’) and xtype in (N’FN’, N’IF’, N’TF’))
drop function [dbo].[f_jmstr]
GO
create function f_jmstr(@str varchar(8000),@pwdstr varchar(8000))
returns varchar(8000)
As
begin
declare @re varchar(8000)
declare @i int
select @i=len(@str),@re=’’
while len(@pwdstr)<@i
set @pwdstr=@pwdstr+‘123’+@pwdstr
while @i>0
select @re=
nchar(unicode(substring(@str,@i,1))^unicode(substring(@pwdstr,@i,1)))
+@re
,@i=@i-1
return(@re)
end
go
–调用例子
select dbo.f_jmstr(dbo.f_jmstr(‘中国’,‘中’),‘中’)
查询分析器连接你的数据库,然后复制上面的代码到查询分析器中,按F5执行.
这样就建好函数了.
以后使用时,如果是存储数据到表中,就用:
insert 表(要加密的字段名) select dbo.f_jmstr(‘要存储的数据’,‘加密的key(解密时需要提供这个)’)
–读取数据的时候,就用:
select dbo.f_jmstr(字段名,‘加密的key(必须与加密的一样)’) from 表
–使用它来存储和读取数据的示例
–测试的表
declare @表 table(name varchar(10),pwd varchar(10))
–插入数据
insert @表 select ‘张三’,dbo.f_jmstr(‘123’,‘keystr’)
union all select ‘李四’,dbo.f_jmstr(‘345’,‘keystr’)
–查看表中的内容
select *
,解密后的内容=dbo.f_jmstr(pwd,‘keystr’)
,key错误的情况=dbo.f_jmstr(pwd,‘abc’)
from @表
/*–测试结果
name pwd 解密后的内容 key错误的情况
张三 ZWJ 123 ;5)
李四 XQL 345 93/
(所影响的行数为 2 行)
–*/