攻略堂 - 攻略 教程 的聚集地's Archiver

admin 发表于 2008-1-9 09:29

对付加密的几个简单办法

许多时候我们跨到了mysql连接的信息,但数据库里的密码全加密了.也有时候连数据连接文件也加密了.在这里根据我的经验说一下我通常用的几个办法.
首先说一下第一种情况,数据库连接后,发现数据库中的密码都经过加密处理.这时候我们先不要轻易放弃.我们可以先找到他的程序后台用户数据表,构造一个后台管理员,一般后台管理密码都是MD5加密的,然后用我们刚构造的这个用户登陆后台,找到servser设置的页面,然后就可以看到明文了,如果密码用 ****表示的话,右键查看源文件一般也可以看到.还有一种情况也就是说后台密码并非MD5加密的,我们可以构造一个管理帐户,密码瞎写一个(格式要和他的管理员密码相似),信箱写你自己的,然后使用找会密码功能.........
下面说一下第二种情况,也就是说他的mysql连接文件加密了,这时我们就需要解密了,一般来说数据库连接文件的加密都是可逆的.
在这里我主要介绍一下PHP中base64的加/解密方法[code]base64_decode
(PHP 3, PHP 4, PHP 5)

base64_decode -- 对使用 MIME base64 编码的数据进行解码
说明
string base64_decode ( string encoded_data )


base64_decode() 对 encoded_data 进行解码,返回原始数据,失败则返回 FALSE。返回的数据可能是二进制的。

例 1. base64_decode() 示例

<?php
$str = 'VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw=='
echo base64_decode($str);
?>

此示例将显示:

This is an encoded string



base64_encode
(PHP 3, PHP 4, PHP 5)

base64_encode -- 使用 MIME base64 对数据进行编码
说明
string base64_encode ( string data )


base64_encode() returns 使用 base64 对 data 进行编码。设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。

Base64-encoded 数据要比原始数据多占用 33% 左右的空间。

例 1. base64_encode() 示例

<?php
$str = 'This is an encoded string'
echo base64_encode($str);
?>

此示例将显示:

VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==[/code]这个就是base64的加密和解密办法
比方说下面的代码[code]<?php
/*
代码由浅蓝的辐射鱼加密!
*/
eval (gzinflate(base64_decode('VdA9b8IwEAbgHYn/EEXsTaBuqFIapXxngLAUdbKM7eIgf5EzRPx74kiR2uGGu+fuHS77/MiGg5GsKNfAZyGavI3j+D2eIvIapq2wExYGXDALQmkokb7p4Qa81kRxj41gxmFnVI+WADSmZh6TBE199fb/qBGKQkeUYq5p/bCuMhoLAqK7/i4Xt3MxjnaHLxPB1f4UQi/vanmcHy755Cy3xaq8PNbH3+SELEgWu2uzX0Q52hT3vNyEadBmO66sJI4DpkbZSnJW1T79z/yl28zalzwB')));
?>[/code]我们可以这样解密[code]<pre><?php
/*
代码由浅蓝的辐射鱼加密!
*/
echo (gzinflate(base64_decode('VdA9b8IwEAbgHYn/EEXsTaBuqFIapXxngLAUdbKM7eIgf5EzRPx74kiR2uGGu+fuHS77/MiGg5GsKNfAZyGavI3j+D2eIvIapq2wExYGXDALQmkokb7p4Qa81kRxj41gxmFnVI+WADSmZh6TBE199fb/qBGKQkeUYq5p/bCuMhoLAqK7/i4Xt3MxjnaHLxPB1f4UQi/vanmcHy755Cy3xaq8PNbH3+SELEgWu2uzX0Q52hT3vNyEadBmO66sJI4DpkbZSnJW1T79z/yl28zalzwB')));
?></pre>[/code]只需要将eval换成echo就可以了.

还有一种常用的加密方法使用mcrypt 加密,下面是加密方法[code]/* 开启加密算法/ */
$td = mcrypt_module_open(@#twofish@#, @#@#, @#ecb@#, @#@#);

/* 建立 IV,并检测 key 的长度 */
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);

/* 生成 key */
$key = substr(md5(@#very secret key@#), 0, $ks);

/* 初始化加密程序 */
mcrypt_generic_init($td, $key, $iv);

/* 加密, $encrypted 保存的是已经加密后的数据 */
print $encrypted = mcrypt_generic($td, @#This is very important data@#);

/* 检测加密句柄 */
mcrypt_generic_deinit($td);

/* 初始化加密模块,用以解密 */
mcrypt_generic_init($td, $key, $iv);

/* 解密 */
$decrypted = mdecrypt_generic($td, $encrypted);

/* 检测解密句柄,并关闭模块 */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

/* 显示原始字符串 */
echo trim($decrypted)."n";[/code]示例,一个用来解base64与mcrypt双重加密过的数据的解密方法:[code]<?php
$text =@base64_decode("5TZfFGKTNYfu16NxFRlNHQ==");

      /* Open the cipher */
      $td = @mcrypt_module_open ('blowfish', '', 'cbc', '');

      /* Create key */
        $key ='o=IZ^6:jmh^Dw'N1MV^FtloLj||RaR3O'

      /* Create the IV and determine the keysize length */
        $iv ='{dS2L02g'

      /* Intialize encryption */
      @mcrypt_generic_init ($td, $key, $iv);

      /* Decrypt encrypted string */
      $decrypted = @mdecrypt_generic ($td, $text);

      @mcrypt_module_close ($td);
  echo trim($decrypted);
   
?>[/code]转自[url]http://www.get2086.cn/read.php?fid=3&tid=20&fpage=1[/url]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.