这个是我的作品,原理就是将字符串@str 与 @pwdstr 做异或处理得到密文,要解密的时候,将密文与 @pwdstr 再次异或就可以解密这个 @pwdstr 就是密匙,如果解密时提供的密匙与加密时的不一样,解密的将是一堆乱码,所以只要保管好密匙就可以了,加密算法公开也不会有问题. 其他还有很多的加密算法,如果楼主嫌不好的话,找专业加密网站看看.
解决方案 »
- 关于SQL SERVER 2005 启动的问题?
- 太慢了! 再慢的脾气也会急死! Sqlserver 新增表分区 的 非常之疑难问题!!!
- java连接sqlserver2008问题
- 问一个简单的问题~~~
- 我有一个VB编的学生信息管理程序,是书中的一例子,数据库是用Microsoft SQL service2000,程序运行不起来
- sql断点
- 怎样把多个字段设计成主关键字?
- 数据库并发问题
- 具体系统、硬件要求是什么?
- 新手求救!!!!!!!!!
- 发现一个奇怪的问题: 可以在查询分析器里面建立一个字段 numeric(38) 型的, 但是只可以用视图的方式在企业管理器里面建立一个 numeric
- 单,双精度数据乘以整数为什么会出现好多小数.
*
加密函數:PWDENCRYPT
比較函數:PWDCOMPARE
*/DECLARE @tabPassword TABLE(pass_col varbinary(256))
DECLARE @pwd_old varchar(50)
DECLARE @pwd_new varbinary(256)
DECLARE @en_pwd varbinary(256) --加密后的數據据 SELECT @pwd_old='aaa'
INSERT @tabPassword VALUES(PWDENCRYPT(@pwd_old))--加密
--SELECT @pwd_old
--SELECT * FROM @tabPasswordSELECT @pwd_new=pass_col FROM @tabPassword --通過函數比較,相同返回1
IF PWDCOMPARE(@pwd_old, @pwd_new)=1
SELECT '通過校驗!'
ELSE
SELECT '密碼錯誤!'
SELECT @pwd_old='bbb'
IF PWDCOMPARE(@pwd_old, @pwd_new)=1
SELECT '通過校驗!'
ELSE
SELECT '密碼錯誤!'--不區分大小寫
SELECT @pwd_old='AAA'
IF PWDCOMPARE(@pwd_old, @pwd_new)=1
SELECT '通過校驗!'
ELSE
SELECT '密碼錯誤!'
...)))+@re ,@i=@i-1
^
加密函數:PWDENCRYPT
比較函數:PWDCOMPARE
*/
這兩函數主要用於密碼校驗,如果樓主要看,那就要自己寫加解密函數
比較函數:PWDCOMPAREPWDENCRYPT加密后的不能解密,所以用来做密码合适,用于加密字段就根本不合适,它无法还原数据.
读取时再还原.
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 行)
--*/