封装密码加密函数php,PHP 使用mcrypt函数封装加密类

PHP程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障。PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库Mcrypt和Mhash。

其中,Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。

封装加密类代码

/**

* 加密类

*/

class Security

{

private static $_instance;

private function __construct() {}

private function __clone() {}

private $_secret_key = 'key'; //加密密钥 可自定义设置 防止泄露

/**

* 单例模式

*/

public static function getInstance()

{

if (!(self::$_instance instanceof self)) {

self::$_instance = new self;

}

return self::$_instance;

}

/**

* 加密工具函数

*/

private function encode1($data)

{

$td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');

$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

$this->_secret_key = 'swtrademark_key';

mcrypt_generic_init($td, $this->_secret_key, $iv);

$encrypted = mcrypt_generic($td, $data);

mcrypt_generic_deinit($td);

return $iv . $encrypted;

}

/**

* 解密工具函数

*/

private function decode1($data)

{

$td = mcrypt_module_open(MCRYPT_RIJNDAEL_256, '', MCRYPT_MODE_CBC, '');

$iv = mb_substr($data, 0, 32, 'latin1');

$this->_secret_key = 'swtrademark_key';

mcrypt_generic_init($td, $this->_secret_key, $iv);

$data = mb_substr($data, 32, mb_strlen($data, 'latin1'), 'latin1');

$data = mdecrypt_generic($td, $data);

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

return trim($data);

}

/**

* 替换

*/

private function replace($str)

{

$str1 = str_replace('/', '*', $str);

$str2 = str_replace('=', '^', $str1);

return str_replace('+', '_', $str2);

}

/**

* 反替换

*/

private function base64replace($str)

{

$str1 = str_replace('*', '/', $str);

$str2 = str_replace('^', '=', $str1);

return str_replace('_', '+', $str2);

}

/**

* 加密调用函数

*/

public function word_encode($keyWord)

{

$str = $this->encode1($keyWord);

return trim($this->replace(base64_encode($str)));

}

/**

* 解密调用函数

*/

public function word_decode($keyWord)

{

$str = base64_decode($this->base64replace($keyWord));

return trim($this->decode1($str));

}

}

/**

* 调用

*/

$str = '这是个秘密';

//加密

$password = Security::getInstance()->word_encode( $str );

echo $password . '
';

//解密

echo Security::getInstance()->word_decode( $password );

//结果: (加密密码为动态的,实时变化,两次运行结果如下)

/**

* bUxwS2u24waVyrXtMu*vKgsPGWVnjzrFD1na8krUAxZOJuAm7qMO4S_o4MogWL1G82OYhCUjt_uW8phmU_niww^^

* 这是个秘密

*/

/**

* 2A_GIJvNHQ9J9NPpKu6x2wehP4ondYQeU1QJQNKj1Bd9NCDPZz0QbENIXE5_pgbespM5qS78Dj2cfSibgL3vWQ^^

* 这是个秘密

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值