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

中国风
博客专家认证
2010-01-05 10:40:14
加精
分享一下方法
用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
...全文
3401 143 打赏 收藏 转发到动态 举报
写回复
用AI写文章
143 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiangBB 2010-05-25
  • 打赏
  • 举报
回复
ding yige ..
seraph99 2010-03-13
  • 打赏
  • 举报
回复
学习了。
limitstar 2010-01-20
  • 打赏
  • 举报
回复
好贴,学习中
迅帮 2010-01-13
  • 打赏
  • 举报
回复
学习 学习 学习 学习
中国风 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 107 楼 sotom 的回复:]
不错,  菜菜的问下, 那个加密后的字符能够在数据库存储不?
[/Quote]
可以,字段的存儲類型用Unicode
zl194 2010-01-13
  • 打赏
  • 举报
回复
yukwang 2010-01-11
  • 打赏
  • 举报
回复
赞一个,学习了。
shuanglo524 2010-01-11
  • 打赏
  • 举报
回复
学习了!~
jackeyabc 2010-01-10
  • 打赏
  • 举报
回复
学习
hj26511314 2010-01-10
  • 打赏
  • 举报
回复
学习
  • 打赏
  • 举报
回复
好棒的,我先收藏起来慢慢的研究
jishengzu 2010-01-10
  • 打赏
  • 举报
回复
Akai007 2010-01-10
  • 打赏
  • 举报
回复
还不错
「已注销」 2010-01-10
  • 打赏
  • 举报
回复
DDDDDDDDDDDDDDDDDDDDDDDD
ws54ttl 2010-01-10
  • 打赏
  • 举报
回复
收藏掉 哼哼~!
alex12qwer 2010-01-09
  • 打赏
  • 举报
回复
学习
lzp765 2010-01-09
  • 打赏
  • 举报
回复
jf
samyou 2010-01-09
  • 打赏
  • 举报
回复
学习了。
lao_bulls 2010-01-09
  • 打赏
  • 举报
回复
mark.
wzy_love_sly 2010-01-09
  • 打赏
  • 举报
回复
强大
加载更多回复(123)
在证书的体系架构当中,包括了四个基本的组件,分别是密钥与加密算法,证书和证书颁发机构,证书申请、续订和吊销的通道,以及使用证书的应用程序 密钥与加密算法,就能够将明文信息,转化成为密文信息,以确保在网络当中传输时信息的安全,它主要分为两种类型,一种是对称加密算法,加密和解密时使用的都是同样的密钥和算法,一般用于加密数据,另外的一种是非对称加密算法,它包括了一对加密密钥,分别是公钥和私钥,如果公钥用于加密明文成为密文,那么私钥将用于解密密文到明文,公钥可以在网络当中进行传输,私钥不在网络当中传输 一般来说,如果两台计算机之间要传输数据,首先将由发送方计算机通过对称加密完成数据的加密过程,然后再由接收方计算机通过网络传输公钥给发送方,发送方再使用公钥加密对称加密的密钥,并且与加密的数据一起发送给接收方计算机,接收方计算机再使用私钥解密出对称加密的密钥,再使用密钥解密加密的数据,完成数据安全传输的过程 而反过来,如果接收方使用私钥加密一个文件,再通过网络将加密文件、公钥和明文一起发送给发送方,发送方使用公钥解密了文件,与一起接收的明文对比,如果相同,就能证明文件未进行修改,实现签名的功能 而证书,就是加密密钥和算法的载体,一张证书当中,包括了加密密钥,算法,签名等信息,并且对于证书申请、颁发、续订和吊销的整个生命周期,还包括了很多其它的一些属性,应用程序可以通过读取证书的这些信息,完成数据的加密解密,签名和身份验证等不同的应用场景 而证书颁发机构,将负责的证书的整个生命周期管理,证书颁发机构是一个层次化的体系结构,根证书颁发机构将只负责子证书颁发机构的证书颁发和吊销管理,子证书颁发机构将负责应用程序证书的申请请求和管理,根证书颁发机构可以放置在一个隔离的环境当中,进一步增强整个证书链的安全,而子证书颁发机构可以按照需求进行扩展,满足不同规模的应用要求 在我们的课程当中,将按照此最佳实践,完成证书服务当中,不同组件的安装和配置

34,597

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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