谁能给我写一个这样的方法加密的程序啊?我研究了很久不会写<?php
$License = "ATAEYVZjBWQHcFY5BmoHdg=="; //域名加密后得到的字符串;
$key ="df3c7a394a38f711c6d04b6f30fd0001";//指定的MD5 KEY 这个可以不管。
//echo strlen(base64_encode($d));
function piged( $txt, $encrypt_key )
{
$encrypt_key = md5( $encrypt_key );
$ctr = 0;
$tmp = "";
$i = 0;
for ( ; $i < strlen( $txt ); ++$i )
{
if ( $ctr == strlen( $encrypt_key ) )
{
$ctr = 0;
}
$tmp .= substr( $encrypt_key, $ctr, 1 ) ^ substr( $txt, $i, 1 );
echo "<br>".$tmp; //输出循环过程
++$ctr;
}
return $tmp;
}
function depig( $txt, $key )
{
$txt = piged( base64_decode( $txt ), $key );
$tmp = "";
$i = 0;
for ( ; $i < strlen( $txt ); ++$i )
{
$md5 = substr( $txt, $i, 1 );++$i;
echo $md5;
$tmp .= substr( $txt, $i, 1 ) ^ $md5;
echo "<br>".$tmp;//输出循环过程
}
return $tmp;
}
$La = depig( $License, $key );
echo "<br>解密结果:";
print_r($La); //最终解密结果;
echo "<br>".base64_decode( $License )."<br>". md5( $key );
echo base64_encode($d);
?>
$License = "ATAEYVZjBWQHcFY5BmoHdg=="; //域名加密后得到的字符串;
$key ="df3c7a394a38f711c6d04b6f30fd0001";//指定的MD5 KEY 这个可以不管。
//echo strlen(base64_encode($d));
function piged( $txt, $encrypt_key )
{
$encrypt_key = md5( $encrypt_key );
$ctr = 0;
$tmp = "";
$i = 0;
for ( ; $i < strlen( $txt ); ++$i )
{
if ( $ctr == strlen( $encrypt_key ) )
{
$ctr = 0;
}
$tmp .= substr( $encrypt_key, $ctr, 1 ) ^ substr( $txt, $i, 1 );
echo "<br>".$tmp; //输出循环过程
++$ctr;
}
return $tmp;
}
function depig( $txt, $key )
{
$txt = piged( base64_decode( $txt ), $key );
$tmp = "";
$i = 0;
for ( ; $i < strlen( $txt ); ++$i )
{
$md5 = substr( $txt, $i, 1 );++$i;
echo $md5;
$tmp .= substr( $txt, $i, 1 ) ^ $md5;
echo "<br>".$tmp;//输出循环过程
}
return $tmp;
}
$La = depig( $License, $key );
echo "<br>解密结果:";
print_r($La); //最终解密结果;
echo "<br>".base64_decode( $License )."<br>". md5( $key );
echo base64_encode($d);
?>
一个简单基于密匙的加解密类
建议LZ下载一个研究,很强大、好用。
代码我就不贴了。
$tmp .= substr( $txt, $i, 1 ) ^ $md5;这个如果你要解密的话只能遍历=$tmp的所有两个字符串的^就是说2391.net 可以加密成100种(假设)加密值,但所有加密值反向只能推出一个明文结果。
a(明文)<=>b c d e(加密值)等
我没有写遍历 只写了可以最简单的一种加密结果。
仅供参考。
<?php
$License = "ATAEYVZjBWQHcFY5BmoHdg=="; //域名加密后得到的字符串;
$key ="df3c7a394a38f711c6d04b6f30fd0001";//指定的MD5 KEY 这个可以不管。
function piged( $txt, $encrypt_key ){
$encrypt_key = md5( $encrypt_key );
$ctr = 0;
$tmp = "";
$i = 0; for ( ; $i < strlen( $txt ); ++$i ){
if ( $ctr == strlen( $encrypt_key ) ){
$ctr = 0;
}
$tmp .= substr( $encrypt_key, $ctr, 1 ) ^ substr( $txt, $i, 1 );
++$ctr;
}
return $tmp;
}
function depig( $txt, $key ){
$txt = piged( base64_decode( $txt ), $key );
$tmp = "";
$i = 0;
for ( ; $i < strlen( $txt ); ++$i ){
$md5 = substr( $txt, $i, 1 ); ++$i;
$tmp .= substr( $txt, $i, 1 ) ^ $md5;
}
return $tmp;
}function encode($txt, $key) {
$tmp = "";
for($i = 0;$i<strlen($txt);$i++){
$tmp .= substr($txt, $i, 1) .chr(0);
}
return base64_encode(piged($tmp, $key));
}$domain = "www.163.com";
$encrypt_code = encode($domain, $key);
echo depig($encrypt_code, $key);
?>
而且,PHP不适合直接作复杂的逻辑处理。
最好还是直接用PHP函数。base64_encode函数本身也不是用PHP写的,如果你用php写同样功能,就算能写出来,效率也是非常低的。