За последние 24 часа нас посетили 10395 программистов и 879 роботов. Сейчас ищут 182 программиста ...

Шифровка данных

Тема в разделе "PHP для новичков", создана пользователем Ezhevsky, 13 авг 2022.

  1. Ezhevsky

    Ezhevsky Новичок

    С нами с:
    2 апр 2020
    Сообщения:
    81
    Симпатии:
    1
    Добрый еще раз день, подскажите пожалуйста, как зашифровать данные и дешифровать их на сайте?

    Например, есть ip, при например аутентификации пользователя он заносится в базу зашифрован, а как сделать так, что бы в админке он был дешифрован и показывал как он есть на самом деле?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.393
    Симпатии:
    1.703
    А чем шифруешь? Тем и расшифруй.

    Только не путай шифрование и хеширование. Основное отличие как раз в том, что расшифровать можно, а расхешировать нельзя. Пароли, к примеру, именно хешируются, а не шифруются.
     
    Ezhevsky нравится это.
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.473
    Симпатии:
    579
    Нафига зашифрован? Обычно просто пароль хэшируется при регистрации/аутентификации.
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.752
    Симпатии:
    1.150
    Адрес:
    там-сям
    Ну бывает такое требование, шифровать приватные данные. Реализация зависит от фреймворка. Если у тебя есть некий DBAL, ты можешь добавить обработчики акцессоры и мутаторы. Суть с в том, что когда присваиваешь значение, оно сразу зашифровывается, а когда читаешь в программе, оно автоматически расшифровывается. При этом должен использоваться ключ шифрования, который не хранится в коде!

    Будут ограничения: ты не сможешь написать выражение SQL, которое бы использовало зашифрованное поле. Частично можно выкрутиться добавив поле с хешем для зашифрованного поля. Тогда можно будет найти значение (но только совпадение строки целиком) по его хешу.
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.393
    Симпатии:
    1.703
    @artoodetoo Ну на совпадение можно и перед запросом искомое прошифровать, шифровка же однозначна, а ключ где-то у нас всё равно имеется, пусть не в коде, так в файлах
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    10.752
    Симпатии:
    1.150
    Адрес:
    там-сям
    - нет, шифрованные данные необязательно получаются одни и те же из одинаковых исходников :) зависит от реализации, конечно.

    - принципиально хранить ключ не под контролем версий (в .env который в .gitignore). когда я писал что ключ не должен быть в коде программы, я подразумевал что код под VCS и доступен каждому разработчику. а ключ шифрования на development и production разный и разрабы знают только то, что должны.
    --- Добавлено ---
    https://laravel-news.com/laravel-ciphersweet
     
    don.bidon нравится это.