利用MSSQL sp自制未公开的加密函数

2016-01-29 16:46 7 1 收藏

利用MSSQL sp自制未公开的加密函数,利用MSSQL sp自制未公开的加密函数

【 tulaoshi.com - SQLServer 】

Microsoft SQL Server是如何加密口令的?如何自制未公开的加密函数?

  如果对MSSQL的用户信息有兴趣的,可能会发现master.dbo.sysxlogins里面存放着用户的口令,可是呢,password字段如果不是null就是一堆看不懂的binary,这个口令是怎么加密的呢?

  其实只要仔细看看master.dbo.sp_addlogin就知道了,MSSQL的sp都可以看到代码,真是不错。


  让我们来看看它是怎么做的,注意这一行select @passwd = pwdencrypt(@passwd),这个时后@passwd就被加密了,让我们也来试一下

DECLARE @ClearPWD varchar(255)
DECLARE @EncryptedPWD varbinary(255)
SELECT @ClearPWD = 'test'
SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))
SELECT @EncryptedPWD

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)
  看上去不错,确实被加密了,可是我怎么还原呢?

  呵呵,这就没戏了,口令加密都是单向的,用加密后的密文来比较就可以了。

  继续看看其它用户相关的sp,可以发现master.dbo.sp_password里面有口令比较的内容。

pwdcompare(@old, password, (CASE WHEN xstatus&2048 = 2048 THEN 1 ELSE 0 END))

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)
  不用去理会xstatus,这是一个状态掩码,一般我们用的时候就直接用0就可以了

DECLARE @ClearPWD varchar(255)
DECLARE @EncryptedPWD varbinary(255)
SELECT @ClearPWD = 'test'
SELECT @EncryptedPWD = CONVERT(varbinary(255), pwdencrypt(@ClearPWD))
SELECT pwdcompare(@ClearPWD, @EncryptedPWD, 0)
SELECT pwdcompare('ErrorPassword', @EncryptedPWD, 0)


  这样我们就可以使用这两个函数来加密自己的密码了:)

来源:http://www.tulaoshi.com/n/20160129/1499495.html

延伸阅读
这些问题可能导致数据值的改变。一般而言,上述问题可能在你使用非二进制串数据类型(如char,varchar,text等数据类型)的情况下发生。 AES_ENCRYPT()和AES_DECRYPT() AES_ENCRYPT()和AES_DECRYPT()可以加密/解密使用官方AES算法的数据。该算法使用128位密钥来编码,但用户可以将其扩展到256位。MySQL选用128位密钥,因为这样算法实现更快,...
VisualBasic的RND()函数有一个重要的特征:当RND()的参数(我们称这里可以称它为种子)为负值时,同一种子(负值)产生同一个随机数序列。同时VisualBasic还具有强大的二进制技术功能,这样我们可以按以下思路实现文件内容加密: X=RND(-KEY)'KEY为正数 VAULE=INT(256*RND)'产生一个随机数(以此为密码) OpenFILENAME$ForBin...
标签: SQLServer
  存储过程、存储函数的加密:WITH ENCRYPTION <!--[if !supportLineBreakNewLine]-- <!--[endif]-- CREATE procedure dbo.sp_XML_main @table_name nvarchar(260)='', @dirname nvarchar(20)='' WITH ENCRYPTION as begin .................................................... end go     存储过程、存...
标签: windows 操作系统
随着微软8月23日发布官方正式版的Windows XP Service Pack 2风潮的迅猛袭来,很多朋友都尝试着将自己的操作系统升级到最新的版本,从而避免频繁的下载安装系统补丁所带来的麻烦,同时也想进一步体验一下这个微软有史以来的“力作”究竟“何趣之有”。 苦于微软的细心经营,这次的Windows XP Service Pack 2安装程序已猛增至290多兆...
标签: Delphi
  这是本人自己制作的替换字符串中子串的函数,他可以从字符串中找出指定子串,并替换为另一子串。             function replacing(S,source,target:string):string;             var site,StrLen:integer;  &n...

经验教程

278

收藏

43
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部