A-A+

php文件加密

2013年09月05日 PHP技术文章 评论 21 条 阅读 560 views 次

php 文件加密码是老生常谈的了,以前的时候一直在研究 zend5 的加密,后来研究自己通过算法来写 php 的加密代码,都是都经不过高手们的破解,在php上面发布的几个加密函数很容易的就给破解了。

其实还是感觉 zend5 的加密还是比较不错的,虽然现在已经被高手们破解了,而且还有专门破解被 zend5 加密过的代码,其中黑刀就是其中,破解率还是蛮高的,但并不是全部被破解了,其中还原后的代码并不是最原始的代码,只是被机械式的还原了而已,所以我们在写 php 代码时,写得严谨一些,将代码质量提高,有一点 bug便不能运行,这个时候再使用 zend5 进行加密,这样加密起来的代码安全性较高,即使被破解了,程序依然不能运行,除非将不完整的代码补全,不过那需要浪费的时间就很多了,而且一般的懒人也不会去逐行研究代码的,所以这是一个 php 文件加密的一个不错的方式。

除了现在依然坚挺着的 zend5,其它的基本上不堪一击了,当然,php 也自己提供了加密的函数,下面主要推荐的是 php 的 Mcrypt 的加密函数,利用本函数可以进行 php 文件的加密,解密也是非常简单的,主要理解 php 加密解密的原理。

<?php
class Mcrypt
{
/**
* 解密
*
* @param string $encryptedText 已加密字符串
* @param string $key 密钥
* @return string
*/
public static function _decrypt($encryptedText,$key = null)
{
$key = $key === null ? Config::get('secret_key') : $key;
$cryptText = base64_decode($encryptedText);
$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
$decryptText = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $cryptTe
xt, MCRYPT_MODE_ECB, $iv);
return trim($decryptText);
}

/**
* 加密
*
* @param string $plainText 未加密字符串
* @param string $key 密钥
*/

public static function _encrypt($plainText,$key = null)
{
$key = $key === null ? Config::get('secret_key') : $key;
$ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
$encryptText = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $plainTex
t, MCRYPT_MODE_ECB, $iv);
return trim(base64_encode($encryptText));
}
}
?>
<?php
class Cookie extends Mcrypt
{
/**
* 删除cookie
*
* @param array $args
* @return boolean
*/
public static function del($args)
{
$name = $args&#91;'name'&#93;;
$domain = isset($args&#91;'domain'&#93;) ? $args&#91;'domain'&#93; : null;
return isset($_COOKIE&#91;$name&#93;) ? setcookie($name, '', time() - 8640
0, '/', $domain) : true;
} 
/**
* 得到指定cookie的值并解密
*
* @param string $name
*/
public static function get($name)
{
return isset($_COOKIE&#91;$name&#93;) ? parent::_decrypt($_COOKIE&#91;$na
me&#93;) : null;
}

/**
* 设置cookie并加密
*
* @param array $args
* @return boolean
*/
public static function set($args)
{
$name = $args&#91;'name'&#93;;
$value= parent::_encrypt($args&#91;'value'&#93;);
$expire = isset($args&#91;'expire'&#93;) ? $args&#91;'expire'&#93; : null;
$path = isset($args&#91;'path'&#93;) ? $args&#91;'path'&#93; : '/';
$domain = isset($args&#91;'domain'&#93;) ? $args&#91;'domain'&#93; : null;
$secure = isset($args&#91;'secure'&#93;) ? $args&#91;'secure'&#93; : 0;
return setcookie($name, $value, $expire, $path, $domain, $secure);
}
}
?>
标签:

21 条留言  访客:21 条  博主:0 条

  1. 游客

    求站长帮忙解密下

  2. 游客

    不知道站长能不能帮忙解密下文件

  3. cao

    不能复制粘贴 x x

  4. 点点滴滴

    有个php加密文件搞了半天搞不定,不知楼主能帮忙不,可以的话email我下,我发文件给你

    • smiling

      可以的。

      • 点点滴滴

        这是加密文件http://url.cn/W1Vr9A

        • smiling

          打开360提示危险网站。

  5. 爱浮夸

    好高级,看不懂。

  6. 生日礼物送什么好

    以前做过java的加密

  7. 花盗网赚博客

    看不懂,来灌水的

  8. 音乐外链网

    研究下,加密我的源码试试~!

  9. 饶阳品论

    博主是个技术方面的人员吧?写的很专业呢。

  10. 小郭博客

    博客人气不错啊

  11. 大魔国

    看不懂啊,汗

  12. 佩服博主,凌晨就开始更新博客了。

    • smiling

      后台有定时发布的设置,提前设置好的。

  13. 社新社

    出商业版本的程序的话,加密就很需要了。这个是出精品的程序员必须要研究的!赞!

  14. 罗胜个人博客

    现在用的是asp的程序,来围观下。

  15. 锋子

    嗯,这个可以有!

  16. 不拿呐

    加密对任何文件都是必要的

  17. 沉寂部落

    专注php二十年

给我留言