<?php

// Super Secure Data Encryption Service! 2.0

$data $_GET['d'] ?? NULL;
define('KEY'md5((require 'key.php').$_SERVER['REMOTE_ADDR']));
define('METHOD''AES-256-CBC');

if (
$data) {
    if (!isset(
$_GET['dec'])) {
        if (
shouldShowFlag($data)) die('not supported.');
        echo 
'<pre>'.bin2hex(encrypt($data)).'</pre>';
    } else {
        
$text decrypt(hex2bin($data));
        echo 
'<pre>'.(htmlspecialchars($text) ?: bin2hex($text)).'</pre>';
        if (
shouldShowFlag($text)) echo require_once 'congratulations2.php';
    }
} else {
    
highlight_file(__FILE__);
}

function 
shouldShowFlag($data) {
    return 
strpos($data'besb66.com') !== false;
}

function 
encrypt($text) {
    
$hash md5($texttrue);
    
$ciphertext openssl_encrypt($hash.$textMETHODKEYOPENSSL_RAW_DATA$iv openssl_random_pseudo_bytes(16));
    return 
$iv.$ciphertext;
}

function 
decrypt($data) {
    if (
strlen($data) < 32) return 'error.';
    
$iv substr($data016);
    
$ciphertext substr($data16);
    
$text openssl_decrypt($ciphertextMETHODKEYOPENSSL_RAW_DATA$iv);
    
$hash substr($text016);
    
$text substr($text16);
    if (
md5($texttrue) !== $hash) return 'wrong hash: '.bin2hex($hash);
    return 
$text;
}