Я хочу реализовать симметричное шифрование в системе клиент-сервер.
Мне нужно показать некоторые личные данные зарегистрированному пользователю в указанной системе. Я хочу отправить данные, зашифрованные ключом, принадлежащим только пользователю и серверу. Этот ключ никогда не будет изменяться между клиентом и сервером, потому что они всегда знают этот ключ. Будет существовать ключ для каждого пользователя.
Поэтому я хочу отправить эти данные, зашифрованные сервером в PHP, и расшифрованную клиентскую сторону (запрашивая ключ пользователя) с помощью Javascript.
Какой метод шифрования я должен использовать?
С какой функцией PHP и с функцией Javascript?
Достаточно ли сильных, чтобы показать тонкие данные?
большое спасибо
Как упоминалось в комментариях, используйте HTTPS. Вы можете создать свой собственный алгоритм шифрования и закодировать его для шифрования в PHP и расшифровать его в JS (не рекомендованное решение, но это сулотион).
Достаточно ли сильных, чтобы показать тонкие данные?
Нет, совсем нет. Шифрование может быть современным, сильным и "безопасным". Но пока вы должны делиться ключами, которые используются для шифрования данных, вы столкнулись с проблемами безопасности. Атакующие могут использовать атаки MITM, чтобы получить ключ при его отправке/получении с сервера или пользователя и, следовательно, прочитать все данные.
Какой метод шифрования я должен использовать? Какая функция PHP и какой Javascript функционирует?
Никто, это родной, используя безопасную передачу данных с помощью HTTPS.
Поэтому наилучшим вариантом является внедрение HTTPS и отправка ваших данных через безопасный канал.
Если данные должны быть защищены на сервере и не читаемы, зашифруйте данные с помощью стандартизованных методов на стороне клиента (javascript) и отправьте зашифрованные данные на сервер. Таким образом, даже если сервер/база данных будет взломана, ваши данные не будут скомпрометированы.