Skip to content

Instantly share code, notes, and snippets.

@prezine
Last active September 8, 2020 11:04
Show Gist options
  • Save prezine/f868db1588cd1e8d270023597185fe5f to your computer and use it in GitHub Desktop.
Save prezine/f868db1588cd1e8d270023597185fe5f to your computer and use it in GitHub Desktop.
My Hash PHP Class
<?php
/**
*
*/
class Encryption
{
public function mt_rand_str($l, $c = 'abcdefghijklmnopqrstuvwxyz1234567890')
{
for ($s = '', $cl = strlen($c)-1, $i = 0; $i < $l; $s .= $c[mt_rand(0, $cl)], ++$i);
return $s;
}
public function encrypt($txt, $key = 'anihc ctI')
{
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.";
$ikey ="-x6g6ZWm2G9g_vr0Bo.pOq3kRIxsZ6rm";
$nh1 = rand(0,64);
$nh2 = rand(0,64);
$nh3 = rand(0,64);
$ch1 = $chars[$nh1];
$ch2 = $chars[$nh2];
$ch3 = $chars[$nh3];
$nhnum = $nh1 + $nh2 + $nh3;
$knum = 0;$i = 0;
while(isset($key[$i])) $knum +=ord($key[$i++]);
$mdKey = substr(md5(md5(md5($key.$ch1).$ch2.$ikey).$ch3),$nhnum%8,$knum%8 + 16);
$txt = base64_encode($txt);
$txt = str_replace(array('+','/','='),array('-','_','.'),$txt);
$tmp = '';
$j=0;$k = 0;
$tlen = strlen($txt);
$klen = strlen($mdKey);
for ($i=0; $i<$tlen; $i++) {
$k = $k == $klen ? 0 : $k;
$j = ($nhnum+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;
$tmp .= $chars[$j];
}
$tmplen = strlen($tmp);
$tmp = substr_replace($tmp,$ch3,$nh2 % ++$tmplen,0);
$tmp = substr_replace($tmp,$ch2,$nh1 % ++$tmplen,0);
$tmp = substr_replace($tmp,$ch1,$knum % ++$tmplen,0);
return $tmp;
}
public function decrypt($txt, $key = 'anihc ctI')
{
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.";
$ikey ="-x6g6ZWm2G9g_vr0Bo.pOq3kRIxsZ6rm";
$knum = 0;$i = 0;
$tlen = strlen($txt);
while(isset($key[$i])) $knum +=ord($key[$i++]);
$ch1 = $txt[$knum % $tlen];
$nh1 = strpos($chars,$ch1);
$txt = substr_replace($txt,'',$knum % $tlen--,1);
$ch2 = $txt[$nh1 % $tlen];
$nh2 = strpos($chars,$ch2);
$txt = substr_replace($txt,'',$nh1 % $tlen--,1);
$ch3 = $txt[$nh2 % $tlen];
$nh3 = strpos($chars,$ch3);
$txt = substr_replace($txt,'',$nh2 % $tlen--,1);
$nhnum = $nh1 + $nh2 + $nh3;
$mdKey = substr(md5(md5(md5($key.$ch1).$ch2.$ikey).$ch3),$nhnum % 8,$knum % 8 + 16);
$tmp = '';
$j=0; $k = 0;
$tlen = strlen($txt);
$klen = strlen($mdKey);
for ($i=0; $i<$tlen; $i++) {
$k = $k == $klen ? 0 : $k;
$j = strpos($chars,$txt[$i])-$nhnum - ord($mdKey[$k++]);
while ($j<0) $j+=64;
$tmp .= $chars[$j];
}
$tmp = str_replace(array('-','_','.'),array('+','/','='),$tmp);
return trim(base64_decode($tmp));
}
}
/* How to use Class */
$hash = new Encryption();
$setKey = "xyz";
$txt = "What you want to encrypt";
echo $hash->encrypt($txt, $setKey); // Ouput: Encrypt text
// replace ->encrypt($txt, $setKey) with ->decrypt($txt, $setKey)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment