日期:2014-05-18  浏览次数:20512 次

[交流貼]教你怎樣實現SQL密文加密,不可反編譯
分享一下方法
用SQL2005以上版本,可用CLR自定義規則.規則最好還是封裝在程序里
SQL code


use Tempdb
go
if object_ID('fn_ACITEncryption') is not null
    drop function fn_ACITEncryption
go
create function fn_ACITEncryption
(
    @Str nvarchar(4000),--加密的字符串
    @Flag bit=1,--1、加密 0、解密
    @Key nvarchar(50)--密文
)
returns nvarchar(4000)--這里可轉換成二進制
with Encryption
as
begin
Declare @LenStr int,@i int,@Str2 nvarchar(4000),@Split nvarchar(2),@LenKey int
select @Str=@Str+'A',@LenStr=len(@Str),@i=1,@Str2='',@LenKey=Len(@Key+'A')-1
while @i<@LenStr
        select    @Split=substring(@Str,@i,1),
                @Split=nchar((unicode(@Split)+case @Flag    when 1 then unicode(substring(@Key+'A',@i%@LenKey+1,1))-1                                                
                                                    when 0 then 65535-unicode(substring(@Key+'A',@i%@LenKey+1,1))
                                                    else 0 end)%65535+cast(@Flag as int)),
                @Str2=@Str2+@Split,@i=@i+1
return @Str2

end
go
select dbo.fn_ACITEncryption(N'Roy',1,'123') as 加密后字符串

/*
加密后字符串
------------------------------
?¢ª

(1 個資料列受到影響)

*/
select dbo.fn_ACITEncryption(N'?¢ª',0,'123') as 解密后字符串
/*
解密后字符串
--------------------------
Roy

(1 個資料列受到影響)
*/


http://blog.csdn.net/roy_88/archive/2009/11/12/4801917.aspx


------解决方案--------------------
SF
學習~~
------解决方案--------------------
SF
------解决方案--------------------
多谢
------解决方案--------------------
学习 大版强大
------解决方案--------------------
哇,厲害。學習一下
------解决方案--------------------
在SQL2000下運行也通過,強大,正好可以用來做一個密碼保存的功能
------解决方案--------------------
.
------解决方案--------------------
大版的这个貌似使用的古典密码,好像是凯撒密码,,这个可以通过分析词出现的频率来进行解密
------解决方案--------------------
學習~~
------解决方案--------------------

------解决方案--------------------
收藏研究一下
------解决方案--------------------
版版自己加精了吧
------解决方案--------------------

------解决方案--------------------
学习
------解决方案--------------------
学习
------解决方案--------------------
数据的加密与解密,有一本电子工业出版社出版的 密码学与网络安全 ,里面的内容很详细。
------解决方案--------------------
very good!
------解决方案--------------------

------解决方案--------------------
好,好,就用这个来弄了!~
------解决方案--------------------


强烈表扬一下.
------解决方案--------------------

------解决方案--------------------