[交流貼]教你怎樣實現SQL密文加密,不可反編譯

时间:2021-12-19 16:04:18
分享一下方法
用SQL2005以上版本,可用CLR自定義規則.規則最好還是封裝在程序里


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

147 个解决方案

#1


SF
學習~~

#2


SF

#3


多谢

#4


学习 大版强大

#5


哇,厲害。學習一下

#6


在SQL2000下運行也通過,強大,正好可以用來做一個密碼保存的功能

#7


.

#8


大版的这个貌似使用的古典密码,好像是凯撒密码,,这个可以通过分析词出现的频率来进行解密

#9


學習~~

#10


#11


收藏研究一下

#12


版版自己加精了吧

#13


[交流貼]教你怎樣實現SQL密文加密,不可反編譯

#14


学习

#15


引用 12 楼 guguda2008 的回复:
版版自己加精了吧

[交流貼]教你怎樣實現SQL密文加密,不可反編譯

#16


歡迎大家討論,分享自己處理方法。 [交流貼]教你怎樣實現SQL密文加密,不可反編譯

#17


学习

#18


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

#19


very good!

#20


在數據層用SQL2005提供的方法也不錯的選擇。
以前的發的歷史貼
只是在安全性方面的管理一定要做好,不然會永久丟失的風險。

#21


#22


好,好,就用这个来弄了!~

#23


[交流貼]教你怎樣實現SQL密文加密,不可反編譯

强烈表扬一下.

#24


[交流貼]教你怎樣實現SQL密文加密,不可反編譯

#25


学习...

#26


学习...

#27


非常好学习

#28


又学到了东西

#29


收藏

#30


學習一下

#31


(⊙o⊙)

#32


学习了

#33


强大,学习学习!

#34


支持一下

#35


回帖

#36


顶一下,学习

#37


强大,学习了

#38


学习

#39


D

#40


学习

#41


学习啦

#42


分享

#43


学习,收藏

#44


..

#45


up

#46


jidajidajid基督教埃及嗲就嗲时间段

#47


该回复于2010-07-28 09:25:16被版主删除

#48


学习

#49


还没遇到过场景。。。先收下。

#50


大学的时候,SQL老师提过,但是没有具体讲

#1


SF
學習~~

#2


SF

#3


多谢

#4


学习 大版强大

#5


哇,厲害。學習一下

#6


在SQL2000下運行也通過,強大,正好可以用來做一個密碼保存的功能

#7


.

#8


大版的这个貌似使用的古典密码,好像是凯撒密码,,这个可以通过分析词出现的频率来进行解密

#9


學習~~

#10


#11


收藏研究一下

#12


版版自己加精了吧

#13


[交流貼]教你怎樣實現SQL密文加密,不可反編譯

#14


学习

#15


引用 12 楼 guguda2008 的回复:
版版自己加精了吧

[交流貼]教你怎樣實現SQL密文加密,不可反編譯

#16


歡迎大家討論,分享自己處理方法。 [交流貼]教你怎樣實現SQL密文加密,不可反編譯

#17


学习

#18


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

#19


very good!

#20


在數據層用SQL2005提供的方法也不錯的選擇。
以前的發的歷史貼
只是在安全性方面的管理一定要做好,不然會永久丟失的風險。

#21


#22


好,好,就用这个来弄了!~

#23


[交流貼]教你怎樣實現SQL密文加密,不可反編譯

强烈表扬一下.

#24


[交流貼]教你怎樣實現SQL密文加密,不可反編譯

#25


学习...

#26


学习...

#27


非常好学习

#28


又学到了东西

#29


收藏

#30


學習一下

#31


(⊙o⊙)

#32


学习了

#33


强大,学习学习!

#34


支持一下

#35


回帖

#36


顶一下,学习

#37


强大,学习了

#38


学习

#39


D

#40


学习

#41


学习啦

#42


分享

#43


学习,收藏

#44


..

#45


up

#46


jidajidajid基督教埃及嗲就嗲时间段

#47


该回复于2010-07-28 09:25:16被版主删除

#48


学习

#49


还没遇到过场景。。。先收下。

#50


大学的时候,SQL老师提过,但是没有具体讲