ПредишенСледващото

Бих искал да отбележа веднага, че криптирането - това е доста сложна наука и, разбира се, не ви урок и аз не мога да видя всичко добре. Но ние ще разгледаме - основа, тоест, как да се приложи механизъм за криптиране с помощта на публичния и частния ключ.

По този начин, системата за криптиране с публичен и частен ключ са били измислени още през 70-те години. Това е - това е системата, която изпраща криптирана съобщение за дешифриране, че е необходимо да се използва ключ, различен от ключа за кодиране. Това е основната разлика между новата система от старата, която се използва само един ключ - за криптиране и декриптиране на съобщения.
В публичен ключ за криптиране системи използват скрипт криптира данните с публичен ключ. Публичен ключ - е кодът, който пряко обслужва инструкцията за шифроване на съобщението. публичен ключ криптиране чрез скрипт, и тя е специфична за даден потребител - уникален.

Encryption на публичния и частния ключ

Рамковата YII2. Бързото развитие на съвременни PHP рамки

Изследване на съвременните рамкови уеб програмиране тънкостите използващи YII2

След съобщението се криптира, той може да бъде разшифрован с частния ключ.

Encryption на публичния и частния ключ

Обърнете внимание на модела (горе) - тя работи схема за криптиране с публичен и частен ключ.

Така, например, трябва да изпрати шифровано съобщение на конкретен потребител. Първо трябва да се получи на публичния ключ на потребителя. След като получи този бутон, за да използвате скрипт криптиране - криптиране на съобщение и да го изпратите на потребителя. За да декодирате, като използва своя частен ключ. В същото време за дешифриране на посланието, вече не е възможно да се използва публичния ключ. Това означава, че само получателят на съобщение може да прочетете съобщението, използвайки личния си ключ.

По този начин, частния ключ в комбинация с скрипта криптиране се използва за дешифриране на съобщения, шифровани с публичния ключ на потребителя. Без знанието на частния ключ за дешифриране на криптиран файл не е възможно.

Какво е необходимо, за да работят

В днешния урок, да приложи механизъм за криптиране, ние ще използваме разширението за PHP - OpenSSL.

Като цяло OpenSSL - тази система на защита на данните и за сертифициране. SSL се превежда като сигурна система гнездо (защитен слой гнездо). OpenSSL се използва в почти всички сървъри на мрежата за защита на предаваните данни и е доста сложно и обширна система. В днешния урок ще разгледаме само тези въпроси, които засягат криптиране.

Не забравяйте да рестартирате уеб сървъра. Ако използвате denwer пакет в основната си версия, много е вероятно това разширение не е нужно. Вие трябва да изтеглите и инсталирате експанжън за вашата версия на denwer (пакетът може да бъде изтеглена от официалния сайт).

Encryption на публичния и частния ключ

генериране на ключове

Така че, първото нещо, което трябва да се генерира ключове. За да направите това, ние ще създадем Enc.class.php файл и да се създаде клас, който ще бъде основна логика на скрипта:

Това създава статично клас в get_keys () метод, който ще се използва за генериране на ключове и да ги съхранява в текстов файл (това се приема, че този метод се нарича само един път - за генериране и записване ключ в текстови файлове). Първото нещо, за да се създаде конфигурационен масив, което е, да посочите настройките при създаването на частния ключ:

Показва бутон тип OPENSSL_KEYTYPE_RSA (частен ключ за криптиране на обществеността и частните ключове) и размера в бита на бъдещето ключ (512 бита). След това, ние генерира частен ключ и връща нейната дръжка:

Издърпайте ключа от неговата стойност deskritpora:

openssl_pkey_export функция () - връща частния ключ в един ред и този ред, се съхранява в променливата $ privKey, която се предава от втория аргумент на функцията. Първият вариант - това е манипулатор на ключа. Сега нека създадем index.php файл и показва стойността на променливата $ privKey (I временно се върне в частни get_keys ключовите стойност () метод):

Това е, което виждаме на екрана:

Encryption на публичния и частния ключ

Encryption на публичния и частния ключ

Рамковата YII2. Бързото развитие на съвременни PHP рамки

Изследване на съвременните рамкови уеб програмиране тънкостите използващи YII2

Тогава съхранява ключа в текстов файл.

Сега, ако друга актуализация скрипт, ние виждаме, че за да се създаде текстов файл, в който се съхранява частния ключ. След това трябва да се генерира публичен ключ. За да направите това, да създадете заявка за сертификат - CSR (Certificate Заявка за подписване). Което е шифрован текст, съдържащ информация за компанията, името на домейн, и т.н. Това искане трябва да закупи сертификат за SSL, което се издава от сертифициращи органи. За да създадете заявка КСО, е необходимо да се създаде масив със следната информация:

«COUNTRYNAME» => «UA» - двуцифрен код, държава;

«StateOrProvinceName» => «Киевская Област» - регион или област;

«LocalityName» => «Киев» - град;

«ORGANIZATIONNAME» => «Организация» - името на дружеството;

«OrganizationalUnitName» => «Мека» - името на отдела;

«CommonName» => «Localhost» - името на домейна;

Допълнителна КСО се създаде заявка:

Моля, имайте предвид, че трябва да мине функция openssl_csr_new (), създадена по-рано масив и частен ключ. На следващо място, да създаде сертификат:

openssl_csr_sign функция - връща манипулатор за създаване на сертификат. Той трябва да премине следните параметри: $ csr- искане КСО, NULL - означава, че полученият сертификат ще бъде самогенерираният сертификат, $ privKey - частния ключ, 10 - път значение за сертификат в тези дни. openssl_x509_export () функция - издърпайте дръжката $ сертификат серт и да го съхранява в променливата $ str_cert. На следващо място, генериране на публичния ключ:

openssl_pkey_get_public () връща манипулатор на публичния ключ (въз основа на удостоверение, получили по-рано), и openssl_pkey_get_details () връща масив, в който ключова клетка съдържа публичен ключ. Нека да видим как изглежда:

На следващо място, пише публичния ключ към файл и връща масив с получените клавиши:

криптиране на данните

За кодиране метод за добавяне на my_enc ():

Както можете да видите, тук четем публичния ключ от текстов файл и се обадете openssl_public_encrypt функция (), който криптира публичния ключ на данните. Параметрите, които трябва да й кажа: ул $ - низ криптиране; $ Of резултат - променлива, в която резултат и $ pub_key ще бъде спасен - публичния ключ.

декриптиране

Както обикновено, ние създаваме нов метод:

Първата стъпка е да получите частен ключ от текстов файл и се обадете openssl_private_decrypt функция (), който декриптира частни основните данни. Параметрите, които трябва да й каже $ на ул - низ, за ​​да дешифрира, $ на резултат променлива, в която резултат $ pr_key ще бъде спасен - частния ключ.

Проверете работата на скрипта

Сега нека да добавите кода на index.php, а именно, да създадете низ криптиране и се обадя методи последователно my_enc (), криптиране и my_dec () декриптиране (пълния код на index.php):

Сега нека да видим какво имаме:

Както можете да видите всичко работи успешно. В този урок е завършен. Всичко най-хубаво и успешно кодиране.

Encryption на публичния и частния ключ

Рамковата YII2. Бързото развитие на съвременни PHP рамки

Изследване на съвременните рамкови уеб програмиране тънкостите използващи YII2

Най-IT новини и уеб разработки на нашия канал Телеграма

Свързани статии

Подкрепете проекта - споделете линка, благодаря!