CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

怎样对SQL Server 2005存储过程解密

作者: 拓狼,  出处:微软BI开拓者, 责任编辑: 李书琴, 
2008-05-07 11:05
  SQLServer2005里使用with encryption选项创建的存储过程仍然和sqlserver2000里一样,都是使用XOR进行了的加密。和2000不一样的是,在2005的系统表syscomments里已经查不到加密过的密文了。要查密文必须使用DAC(专用管理员连接)连接到数据库后,在系统表sys.sysobjvalues查询,该表的列imageval存储了相应的密文。

  --开始计数

  SET @intProcSpace=1

  --使用字符填充临时变量

  SET @real_decrypt_01 = replicate(N'A', (datalength(@real_01) /2 ))

  --循环设置每一个变量,创建真正的变量

  --每次一个字节

  SET @intProcSpace=1

  --如有必要,遍历每个@real_xx变量并解密

  WHILE @intProcSpace<=(datalength(@real_01)/2)

  BEGIN

  --真的和假的和加密的假的进行异或处理

  SET @real_decrypt_01 = stuff(@real_decrypt_01, @intProcSpace, 1,

  NCHAR(UNICODE(substring(@real_01, @intProcSpace, 1)) ^

  (UNICODE(substring(@fake_01, @intProcSpace, 1)) ^

  UNICODE(substring(@fake_encrypt_01, @intProcSpace, 1)))))

  SET @intProcSpace=@intProcSpace+1

  END

  --通过sp_helptext逻辑向表#output里插入变量

  insert #output (real_decrypt) select @real_decrypt_01

  -- select real_decrypt AS '#output chek' from #output --测试

  -- -------------------------------------

  --开始从sp_helptext提取

  -- -------------------------------------

  declare @dbname sysname

  ,@BlankSpaceAdded int

  ,@BasePos int

  ,@CurrentPos int

  ,@TextLength int

  ,@LineId int

  ,@AddOnLen int

共9页。 9 1 2 3 4 5 6 7 8 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i