<?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 ($i=0; $i < $len; $i++) {
$str .= chr((ord($data[$i]) + ord($char[$i])) % 128);
}
return base64_encode($str);
}
?>
下載下傳檔案後打開index.php,内容如上
根據描述
根據所給加密字元串還原出原始資料
編寫解密代碼
<?php
$str = "fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=";
$data = base64_decode($str);
for ($i=0; $i < strlen($data); $i++) {
echo ord($data[$i]).' ';
}
$key = md5('ISCC');
$x = 0;
$len = strlen($data);
$klen = strlen($key);
for ($i=0; $i < $len; $i++) {
if ($x == $klen)
{
$x = 0;
}
$char .= $key[$x];
$x+=1;
}
echo $char.' ';
for ($i=0; $i < $len; $i++) {
$num = (ord($data[$i]) - ord($char[$i])) % 128;
if($num < 0){
$flag .= chr($num+128);
}else{
$flag .= chr($num);
}
}
echo $flag
?>
大部分代碼都與加密代碼類似,在最後一步,需要考慮ascii碼相減後為負數的情況。
線上運作代碼https://c.runoob.com/compile/1