php对称算法_PHP简单对称加密算法之加密、简单对称加密算法之解密,以及简单的混淆加密。...

PHP简单对称加密算法之加密、简单对称加密算法之解密,以及简单的混淆加密。

平时我们使用的PHP加密方法都是一些不可逆的加密函数为:md5()、sha1()、crypt()等。md5() 用来计算 MD5 哈稀。语法为:md5(); crypt() 将字符串用 UNIX 的标准加密 DES 模块加密。这是单向的加密函数,无法解密。

可逆转的加密有:base64_encode()、urlencode() 相对应的解密函数:base64_decode() 、urldecode() 。base64_encode() 将字符串以 MIME BASE64 编码。此编码方式可以让中文字或者图片也能在网络上顺利传输。 它的解密函数为:base64_decode(); 将复回原样。urlencode() 将字符串以 URL 编码。例如空格就会变成加号。它的解密函数为:urldecode(); 将复回原样。

1、简单对称加密算法之加密、 简单对称加密算法之解密

/**

*简单对称加密算法之加密

* @param String $string 需要加密的字串

* @param String $skey 加密EKY

*/

function encode($string = '', $skey = 'cxphp') {

if (!is_numeric($string) && empty($string)) {

return '';

}

$strArr = str_split(base64_encode($string));

$strCount = count($strArr);

foreach (str_split($skey) as $key => $value) {

$key 

}

return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr));

}

/**

* 简单对称加密算法之解密

* @param String $string 需要解密的字串

* @param String $skey 解密KEY

*/

function decode($string = '', $skey = 'cxphp') {

if (!is_numeric($string) && empty($string)) {

return '';

}

$strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);

$strCount = count($strArr);

foreach (str_split($skey) as $key => $value) {

$key <= $strCount && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];

}

return base64_decode(join('', $strArr));

}

/**

* [randcode 获取0-9,a-z,A-Z的随机数]

* @param  integer $length [长度]

*/

function randcode($length = 6) {

$range_arr = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));

shuffle($range_arr);

$range_arr = array_splice($range_arr, 0, $length);

return implode('', $range_arr);

}

2、自定义混淆加密、解密方法

//加密参数

private $scret_key= 'abc';

/**

* [encode加密]

* @param  string $value [加密字段]

*/

private function encode($value = '') {

//如果是空则返回空

if(empty($value)){

return '';

}

//返回加密的随机字符串

return $value . $this->scret_key . md5(randcode(10));

}

/**

* [decode解密]

* @param  string $value [解密字段]

*/

private function decode($value = '') {

//如果是空则返回空

if(empty($value)){

return '';

}

//返回加密的随机字符串

$res = explode($this->scret_key, $value);

return $res[0];

}

3、使用

1)、加密:先混淆加密,再对称加密

73673c797a6835ca30b147839cb35038.png

165b2a9f85e7984bf35a3c786b22fa1b.png

2)、解密:先对称解密,再混淆解密

615ad100bbb579330c126430ee4a90ca.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值