双向加密php,贴一对php双向加密函数

本文介绍了一种名为Tiri的自定义加密函数tiriEncode和解密函数tiriDecode,通过特定的字符替换和位移操作,确保同一输入有多个版本的加密结果,且能无损解密。算法利用了随机因子和字符串切片操作,提供了信息安全性和灵活性。
摘要由CSDN通过智能技术生成

加密函数:输入参数字符串,返回机密字符串。

Coding::tiriEncode(String)

解密函数:输入上边函数的加密结果,反解到加密前字符串

Coding::tiriDecode(String)

特点:

1.同一个输入,每次输出都不同,可以有若干个加密后的版本。无论密文什么样,都能反解回原文,无信息损失。

2.完全自己写的,估计网上没有完全类似的。用了多年,一直挺靠谱的。

如果有同学感兴趣,可以拿去自用

namespace Tiri\Widget;

class Coding{

static function tiriEncode($str , $factor = 0){

$len = strlen($str);

if(!$len){

return;

}

if($factor === 0){

$factor = mt_rand(1, min(255 , ceil($len / 3)));

}

$c = $factor % 8;

$slice = str_split($str ,$factor);

for($i=0;$i < count($slice);$i++){

for($j=0;$j< strlen($slice[$i]) ;$j ++){

$slice[$i][$j] = chr(ord($slice[$i][$j]) + $c + $i);

}

}

$ret = pack('C' , $factor).implode('' , $slice);

return self::base64URLEncode($ret);

}

static function tiriDecode($str){

if($str == ''){

return;

}

$str = self::base64URLDecode($str);

$factor = ord(substr($str , 0 ,1));

$c = $factor % 8;

$entity = substr($str , 1);

$slice = str_split($entity , $factor);

if(!$slice){

return false;

}

for($i=0;$i < count($slice); $i++){

for($j =0 ; $j < strlen($slice[$i]); $j++){

$slice[$i][$j] = chr(ord($slice[$i][$j]) - $c - $i );

}

}

return implode($slice);

}

static function base64URLEncode($data) {

return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');

}

static function base64URLDecode($data) {

return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));

}

static function stringXor($str){

for ($i = 0; $i < strlen($str); ++$i) {

$str[$i] = chr(ord($str[$i]) ^ 0x7F);

}

return $str;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值