В настоящее время я работаю с данными, которые я хотел бы временно сохранить в своей базе данных как зашифрованные данные. Меня не беспокоит взлом базы данных, я просто хочу убедиться, что люди, которые ввели данные, не доступны никому, кроме них самих. (и я конечно)
Данные не предназначены для постоянного хранения в базе данных, так как я экспортирую их в стороннее приложение, используя их API, но, поскольку они имеют ограничение скорости, мне нужно хранить данные в нашей базе данных до тех пор, пока ограничение не будет превышено, и я можете загрузить его. (Предполагая, что ограничение скорости происходит)
Процесс:
Запрос, который я получаю от формы, находится в массиве, поэтому для начала я сериализую () массив, чтобы получить длинную строку, которую я буду отменять () позже.
Затем я хочу использовать метод, который позволяет мне преобразовать строку в числа и обратно без потери информации.
Причина, по которой я хочу превратить данные в числа, заключается в том, что я использую библиотеку HashIds, которая кодирует только числа. Насколько мне известно, это дополнительный уровень безопасности, который я с удовольствием добавлю.
Узнайте больше о HashIds здесь: http://hashids.org/
Что я пробовал:
Я попытался преобразовать строку в шестнадцатеричные числа, а затем шестнадцатеричные числа в десятичные числа. К сожалению, число было слишком большим, и мне не повезло, что я использовал biginteger.
base64_encode (), который не собирается превращать данные в числа, но затем base_converting их есть. Но я не мог понять, как конвертировать базу в php, потому что, по-видимому, это довольно странно.
Заключение:
Как я могу преобразовать данные, которые я получаю из запроса формы, в короткую закодированную строку, которая может быть преобразована обратно в данные без особых хлопот? Я еще не совсем знаю все варианты, которые предлагает PHP.
ОБНОВИТЬ:
Чтобы завершить эту тему, я использовал OpenSSL для шифрования моего сериализованного массива. Единственная проблема, с которой я столкнулся, заключалась в том, что если запрос содержал файл, я не смог бы его сериализовать и сохранить объект в базе данных. Мне все еще нужен способ обойти это, поскольку стороннее приложение ожидает, что файл будет объектом multipart / formdata, я не могу просто сохранить путь к файлу в базе данных и загрузить его. Но я думаю, мне придется выяснить это позже.
Эта ссылка http://hashids.org/ предоставляет довольно четкий пример. Предположим, что ваше целое число 15
,
$hashids = new Hashids\Hashids('some random string for a salt. Make sure you use the same salt if you want to be able to decode');
$encoded = $hashids->encode(15);
print_r(['hashedId' => $encoded]);
$decoded = $hashids->decode($hashed);
print_r(['decoded' => $decoded]);
Так что ценность $decoded
должно быть равно 15
Обновить
Извините — hashids
немного твоего вопроса меня отбросило и поэтому я неправильно понял, что ты спрашиваешь. Я обновлю свой ответ:
Вы действительно должны использовать https://secure.php.net/openssl_encrypt а также https://secure.php.net/manual/en/function.openssl-decrypt.php
Других решений пока нет …