Туторијал Client<->Server Communication [RSA&AES/PHP]

Дискусија во форумот 'PHP, ASP, JSP (JavaServer Pages)' започната од Pulse, 13 Септември 2017.

  1. Pulse

    Pulse Активен гик

    1,011
    887
    26 oктомври 2014
    Машко
    Full Stack Web Developer
    Туторијалот накратко ќе ви покаже/објасни како да направите безбедносна врска помеѓу клиент и сервер.
    Се што ви е потребно се неколку готови класи(во атач) и 2 генерирани RSA клучеви(Private Key и Public Key).

    Мој предлог е целата комуникација да ја вршите на следниов начин:
    1) Клиентот побарува RSA Public Key
    2) Клиентот генерира 2 AES клуча (Key & IV)
    3) Клиентот ги енкриптира овие 2 клуча со претходно добиениот Public Key од сервер и ги испраќа до сервер
    4) Серверот ги декриптира со неговиот RSA Private Key и ги зачувува 2та AES клуча

    Кога веќе 2те страни ќе ги имаат клучевите за AES енкрипција, целата комуникација ќе се одвива со AES, RSA се исфрла од употреба.

    Во секоја датотека на почетокот потребно е да запишете:
    PHP:
    <?php
    include('Crypt/RSA.php');
    include(
    'Crypt/AES.php');
    ?>
    Генерирање на RSA Private и Public Кeys
    PHP:
    $rsa = new Crypt_RSA();
    extract($rsa->createKey());
    echo 
    $privatekey;
    echo 
    '<br/>';
    echo 
    $publickey;
    * Добро размислете како и каде ќе го чувате RSA Private клучот!
    * Доколку дојде до 3ти лица може лесно да се злоупотреби.

    Генерирањето AES клучеви
    Овие клучеви треба за секој клиент да ви бидат различни, генерирањето на истите можете сами да го одредите. Пократко кажано ова му доаѓа нешто како рандом стринг. Постојат примери(побарајте на гугл) како се генерираат безбедни AES клучеви.

    Енкрипција и Декрипција со RSA
    PHP:
    $string "It.com.mk";
    $rsa = new Crypt_RSA();
    extract($rsa->createKey());
    $rsa->loadKey($privatekey);
    $encrypted $rsa->encrypt($string);
    $rsa->loadKey($publickey);
    echo 
    $rsa->decrypt($encrypted);
    Енкрипција и Декрипција со AES
    PHP:
    $string "It.com.mk";
    $aes = new Crypt_AES();
    $aes->setKey('abcdefghijklmdsfdp');
    $aes->setIV('abcdgsdfhjklmnos');
    $aes->enablePadding();
    echo 
    $aes->decrypt($aes->encrypt($string));
    Важно да се знае:
    Доколку некој од енкриптираните/декриптираните стрингови ви се појави со хиероглифи, искористете ги base64_encode() и base64_decode() фунцкиите.

    #Мислење1000 :D
     

    Прикачени датотеки:

    Последна промена: 13 Септември 2017
    Frozen., shooter, null_ptr и на уште 1 им се допаѓа ова.

Сподели