Загрузка...

PHP: Шифрование данных под ключ шифрования

Тема в разделе Backend создана пользователем RtkN0omVM 30 авг 2019. 333 просмотра

Загрузка...
  1. RtkN0omVM
    RtkN0omVM Автор темы 30 авг 2019 1 27 авг 2019
    :finger_up: Идеально для тех, кто хочет сделать свой мб мессенджер, где будет шифрование данных.

    Уязвимостей нету :)

    Код
    <?php
    echo '<meta charset="utf-8">';
    function encode($unencoded,$key){//Шифруем
    $string=base64_encode($unencoded);//Переводим в base64

    $arr=array();//Это массив
    $x=0;
    while ($x++< strlen($string)) {//Цикл
    $arr[$x-1] = md5(md5($key.$string[$x-1]).$key);//Почти чистый md5
    $newstr = $newstr.$arr[$x-1][3].$arr[$x-1][6].$arr[$x-1][1].$arr[$x-1][2];//Склеиваем символы
    }
    return $newstr;//Вертаем строку
    }

    function decode($encoded, $key){//расшифровываем
    $strofsym="qwertyuiopasdfghjklzxcvbnm1234567890QWERTYUIOPASDFGHJKLZXCVBNM=";//Символы, с которых состоит base64-ключ
    $x=0;
    while ($x++<= strlen($strofsym)) {//Цикл
    $tmp = md5(md5($key.$strofsym[$x-1]).$key);//Хеш, который соответствует символу, на который его заменят.
    $encoded = str_replace($tmp[3].$tmp[6].$tmp[1].$tmp[2], $strofsym[$x-1], $encoded);//Заменяем №3,6,1,2 из хеша на символ
    }
    $answer = base64_decode($encoded);//Вертаем расшифрованную строку
    return $answer;
    }

    $domen = 'site.site';
    $salt = md5('ВАША СОЛЬ');
    $salt = md5('v!}OsJ?9RV:lH%0R52IZv!}OsJ?9RV:lH%0R52IZv!}OsJ?9RV:lH%0R52IZv!}OsJ?9RV:lH%0R52IZ'.$salt.'v!}OsJ?9RV:lH%0R52IZv!}OsJ?9RV:lH%0R52IZv!}OsJ?9RV:lH%0R52IZv!}OsJ?9RV:lH%0R52IZ');
    $type = $_GET['a'];
    $text = $_GET['text'];
    $key = md5($_GET['key']);
    $key = md5('666'.$salt.'666'.$key.'666');
    if($type == 'en')
    {
    include '1.php';
    $newstr = encode($text, $key);
    $answer = $newstr;
    echo 'ENCODED: <textarea style="margin: 0px; height: 920px; width: 1894px;" readonly>';
    echo $answer;
    echo '</textarea>';
    }
    if($type == 'de')
    {
    $answer = decode($text, $key);
    include '2.php';
    echo 'DECODED: <textarea style="margin: 0px; height: 920px; width: 1894px;" readonly>';
    echo $answer;
    echo '</textarea>';
    }

    echo '<br> '.$domen;
    ?>
    Код
    <?php

    $text = str_replace('а', 'aT', $text);
    $text = str_replace('б', 'bG', $text);
    $text = str_replace('в', 'yN', $text);
    $text = str_replace('г', 'pW', $text);
    $text = str_replace('д', 'kQ', $text);
    $text = str_replace('е', 'zM', $text);
    $text = str_replace('ё', 'zX', $text);
    $text = str_replace('ж', 'aJ', $text);
    $text = str_replace('з', 'aZ', $text);
    $text = str_replace('и', 'aI', $text);
    $text = str_replace('й', 'aL', $text);
    $text = str_replace('к', 'bK', $text);
    $text = str_replace('л', 'lK', $text);
    $text = str_replace('м', 'mS', $text);
    $text = str_replace('н', 'jI', $text);
    $text = str_replace('о', 'oP', $text);
    $text = str_replace('п', 'fF', $text);
    $text = str_replace('р', 'oR', $text);
    $text = str_replace('с', 'jQ', $text);
    $text = str_replace('т', 'mN', $text);
    $text = str_replace('у', 'pG', $text);
    $text = str_replace('ф', 'lE', $text);
    $text = str_replace('х', 'lH', $text);
    $text = str_replace('ц', 'uC', $text);
    $text = str_replace('ч', 'cH', $text);
    $text = str_replace('ш', 'kH', $text);
    $text = str_replace('щ', '**', $text);
    $text = str_replace('ъ', 'tV', $text);
    $text = str_replace('ы', 'dI', $text);
    $text = str_replace('ь', 'mV', $text);
    $text = str_replace('э', 'kB', $text);
    $text = str_replace('ю', 'tA', $text);
    $text = str_replace('я', 'iA', $text);


    $text = str_replace('А', 'BaTB', $text);
    $text = str_replace('Б', 'BbGB', $text);
    $text = str_replace('В', 'ByNB', $text);
    $text = str_replace('Г', 'BpWB', $text);
    $text = str_replace('Д', 'BkQB', $text);
    $text = str_replace('Е', 'BzMB', $text);
    $text = str_replace('Ё', 'BzXB', $text);
    $text = str_replace('Ж', 'BaJB', $text);
    $text = str_replace('З', 'BaZB', $text);
    $text = str_replace('И', 'BaIB', $text);
    $text = str_replace('Й', 'BaLB', $text);
    $text = str_replace('К', 'BbKB', $text);
    $text = str_replace('Л', 'BlKB', $text);
    $text = str_replace('М', 'BmSB', $text);
    $text = str_replace('Н', 'BjIB', $text);
    $text = str_replace('О', 'BoPB', $text);
    $text = str_replace('П', 'BfFB', $text);
    $text = str_replace('Р', 'BoRB', $text);
    $text = str_replace('С', 'BjQB', $text);
    $text = str_replace('Т', 'BmNB', $text);
    $text = str_replace('У', 'BpGB', $text);
    $text = str_replace('Ф', 'BlEB', $text);
    $text = str_replace('Х', 'BlHB', $text);
    $text = str_replace('Ц', 'BuCB', $text);
    $text = str_replace('Ч', 'BcHB', $text);
    $text = str_replace('Ш', 'BkHB', $text);
    $text = str_replace('Щ', 'BhHB', $text);
    $text = str_replace('Ъ', 'BtVB', $text);
    $text = str_replace('Ы', 'BdIB', $text);
    $text = str_replace('Ь', 'BmVB', $text);
    $text = str_replace('Э', 'BkBB', $text);
    $text = str_replace('Ю', 'BtAB', $text);
    $text = str_replace('Я', 'BiAB', $text);

    ?>
    Код
    <?php

    $answer = str_replace('BaTB', 'А', $answer);
    $answer = str_replace('BbGB', 'Б', $answer);
    $answer = str_replace('ByNB', 'В', $answer);
    $answer = str_replace('BpWB', 'Г', $answer);
    $answer = str_replace('BkQB', 'Д', $answer);
    $answer = str_replace('BzMB', 'Е', $answer);
    $answer = str_replace('BzXB', 'Ё', $answer);
    $answer = str_replace('BaJB', 'Ж', $answer);
    $answer = str_replace('BaZB', 'З', $answer);
    $answer = str_replace('BaIB', 'И', $answer);
    $answer = str_replace('BaLB', 'Й', $answer);
    $answer = str_replace('BbKB', 'К', $answer);
    $answer = str_replace('BlKB', 'Л', $answer);
    $answer = str_replace('BmSB', 'М', $answer);
    $answer = str_replace('BjIB', 'Н', $answer);
    $answer = str_replace('BoPB', 'О', $answer);
    $answer = str_replace('BfFB', 'П', $answer);
    $answer = str_replace('BoRB', 'Р', $answer);
    $answer = str_replace('BjQB', 'С', $answer);
    $answer = str_replace('BmNB', 'Т', $answer);
    $answer = str_replace('BpGB', 'У', $answer);
    $answer = str_replace('BlEB', 'Ф', $answer);
    $answer = str_replace('BlHB', 'Х', $answer);
    $answer = str_replace('BuCB', 'Ц', $answer);
    $answer = str_replace('BcHB', 'Ч', $answer);
    $answer = str_replace('BkHB', 'Ш', $answer);
    $answer = str_replace('BhHB', 'Щ', $answer);
    $answer = str_replace('BtvB', 'Ъ', $answer);
    $answer = str_replace('BdIB', 'Ы', $answer);
    $answer = str_replace('BmVB', 'Ь', $answer);
    $answer = str_replace('BkBB', 'Э', $answer);
    $answer = str_replace('BtAB', 'Ю', $answer);
    $answer = str_replace('BiAB', 'Я', $answer);

    $answer = str_replace('aT', 'а', $answer);
    $answer = str_replace('bG', 'б', $answer);
    $answer = str_replace('yN', 'в', $answer);
    $answer = str_replace('pW', 'г', $answer);
    $answer = str_replace('kQ', 'д', $answer);
    $answer = str_replace('zM', 'е', $answer);
    $answer = str_replace('zX', 'ё', $answer);
    $answer = str_replace('aJ', 'ж', $answer);
    $answer = str_replace('aZ', 'з', $answer);
    $answer = str_replace('aI', 'и', $answer);
    $answer = str_replace('aL', 'й', $answer);
    $answer = str_replace('bK', 'к', $answer);
    $answer = str_replace('lK', 'л', $answer);
    $answer = str_replace('mS', 'м', $answer);
    $answer = str_replace('jI', 'н', $answer);
    $answer = str_replace('oP', 'о', $answer);
    $answer = str_replace('fF', 'п', $answer);
    $answer = str_replace('oR', 'р', $answer);
    $answer = str_replace('jQ', 'с', $answer);
    $answer = str_replace('mN', 'т', $answer);
    $answer = str_replace('pG', 'у', $answer);
    $answer = str_replace('lE', 'ф', $answer);
    $answer = str_replace('lH', 'х', $answer);
    $answer = str_replace('uC', 'ц', $answer);
    $answer = str_replace('cH', 'ч', $answer);
    $answer = str_replace('kH', 'ш', $answer);
    $answer = str_replace('**', 'щ', $answer);
    $answer = str_replace('tv', 'ъ', $answer);
    $answer = str_replace('dI', 'ы', $answer);
    $answer = str_replace('mV', 'ь', $answer);
    $answer = str_replace('kB', 'э', $answer);
    $answer = str_replace('tA', 'ю', $answer);
    $answer = str_replace('iA', 'я', $answer);

    ?>

    Чтобы зашифровать надо сделать запрос:

    http://ваш.сайт/?a=en&text=ТУТ ВАШ ТЕКСТ ДЛЯ ШИФРОВАНИЯ&key=ТУТ КЛЮЧ ДЛЯ ШИФРОВАНИЯ

    Чтобы расшифровать надо сделать запрос:

    http://ваш.сайт/?a=de&text=ТУТ ВАШ ЗАШИФРОВАННЫЙ ТЕКСТ&key=ТУТ КЛЮЧ ШИФРОВАНИЯ
     
    30 авг 2019 Изменено
  2. RtkN0omVM
    RtkN0omVM Автор темы 30 окт 2019 1 27 авг 2019
  3. iNinja_inactive2740347
    iNinja_inactive2740347 5 ноя 2019 lolzteam.org/threads/1357379/ « Авито Юла Boxberry 8 30 окт 2019
    RtkN0omVM, можно все упростить еще, использовав следующие функции:
    Код

    $encrypt = mc_encrypt('3c6e0b8a9c15224a8228b9a98ca1531d', 'Hello, world!');
    $decrypt = mc_decrypt('3c6e0b8a9c15224a8228b9a98ca1531d', $encrypt);

    echo '<p>'. $encrypt .'</p>';
    echo '<p>'. $decrypt .'</p>';

    function mc_encrypt($key, $encrypt) {
    $encrypt = serialize($encrypt);
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
    $key = pack('H*', $key);
    $mac = hash_hmac('sha256', $encrypt, substr(bin2hex($key), -32));
    $passcrypt = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $encrypt.$mac, MCRYPT_MODE_CBC, $iv);
    $encoded = base64_encode($passcrypt).'|'.base64_encode($iv);
    return $encoded;
    }

    function mc_decrypt($key, $decrypt) {
    $decrypt = explode('|', $decrypt.'|');
    $decoded = base64_decode($decrypt[0]);
    $iv = base64_decode($decrypt[1]);
    if(strlen($iv)!== mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC)) { return false; }
    $key = pack('H*', $key);
    $decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $decoded, MCRYPT_MODE_CBC, $iv));
    $mac = substr($decrypted, -64);
    $decrypted = substr($decrypted, 0, -64);
    $calcmac = hash_hmac('sha256', $decrypted, substr(bin2hex($key), -32));
    if($calcmac !== $mac){ return false; }
    $decrypted = unserialize($decrypted);
    return $decrypted;
    }

    Ключ принимается длинной только 32 или 64 символа, поэтому можно с помощью md5 захешировать какое-нибудь слово или фразу и использовать этот хэш в качестве ключа.
     
Top