Добрый еще раз день, подскажите пожалуйста, как зашифровать данные и дешифровать их на сайте? Например, есть ip, при например аутентификации пользователя он заносится в базу зашифрован, а как сделать так, что бы в админке он был дешифрован и показывал как он есть на самом деле?
А чем шифруешь? Тем и расшифруй. Только не путай шифрование и хеширование. Основное отличие как раз в том, что расшифровать можно, а расхешировать нельзя. Пароли, к примеру, именно хешируются, а не шифруются.
Ну бывает такое требование, шифровать приватные данные. Реализация зависит от фреймворка. Если у тебя есть некий DBAL, ты можешь добавить обработчики акцессоры и мутаторы. Суть с в том, что когда присваиваешь значение, оно сразу зашифровывается, а когда читаешь в программе, оно автоматически расшифровывается. При этом должен использоваться ключ шифрования, который не хранится в коде! Будут ограничения: ты не сможешь написать выражение SQL, которое бы использовало зашифрованное поле. Частично можно выкрутиться добавив поле с хешем для зашифрованного поля. Тогда можно будет найти значение (но только совпадение строки целиком) по его хешу.
@artoodetoo Ну на совпадение можно и перед запросом искомое прошифровать, шифровка же однозначна, а ключ где-то у нас всё равно имеется, пусть не в коде, так в файлах
- нет, шифрованные данные необязательно получаются одни и те же из одинаковых исходников зависит от реализации, конечно. - принципиально хранить ключ не под контролем версий (в .env который в .gitignore). когда я писал что ключ не должен быть в коде программы, я подразумевал что код под VCS и доступен каждому разработчику. а ключ шифрования на development и production разный и разрабы знают только то, что должны. --- Добавлено --- https://laravel-news.com/laravel-ciphersweet