回复:SQLServer2005里怎样对使用with encryption选项创建的存储过程解密
1.需要做NULL值判定
对于 @parentname= 这里需要加 Null值的判断(对过程来说,我只测试了过程),否则会什么都取不到!
--提取对象的类型如是存储过程还是函数,如果是触发器,还要得到其父对象的名称
select @objtype=type,@parentname=object_name(parent_object_id)
from sys.objects where [object_id]=object_id(@procedure)
2.另外在我用这个过程的时候,无论我传什么,都会在 END处退出,原因未知
IF @revfl = 1
BEGIN
PRINT '警告:该存储过程会删除并重建原始的存储过程。'
PRINT ' 在运行该存储过程之前确保你的数据库有一个备份。'
PRINT ' 该存储过程通常应该运行在产品环境的一个备份的非产品环境下。'
PRINT ' 为了运行这个存储过程,将参数@refl的值更改为0。'
RETURN 0
END
3.似乎这里边界处理的不是太好,我在
异或出来的结果加了 isnull( ,'')处理,否则这个循环出来之后,出来的解密字符串就是NULL
NCHAR(UNICODE(substring(@real_01, @intProcSpace, 1)) ^
(UNICODE(substring(@fake_01, @intProcSpace, 1)) ^
UNICODE(substring(@fake_encrypt_01, @intProcSpace, 1)))))