Я генерирую соль, используя функцию openssl_random_pseudo_bytes
в php. Однако я не могу сохранить вывод в базе данных PostgreSQL.
Я получаю сообщение об ошибке:
ОШИБКА: неверная последовательность байтов для кодирования "UTF8"
Теперь я понимаю, что кодировка соответствующей базы данных установлена на UTF8 и что выход функции не соответствует, но каков правильный способ ее решения?
Это случайная соль, и я волнуюсь, что преобразование ее в UTF8 через любой процесс не сделает его криптографически безопасным больше?
Функция openssl_random_pseudo_bytes
выводит двоичные данные, и я пытаюсь сохранить результат в поле базы данных типа данных, меняющемся, по ошибке рассматривая его как строку.
bytea
– правильный тип данных для поля в базе данных PostgreSQL.
http://www.postgresql.org/docs/9.2/interactive/datatype-binary.html
Обновление. Кроме того, кажется, вам нужно использовать pg_escape_bytea
на выходе, чтобы иметь возможность фактически вставлять двоичные данные в базу данных.
Благодаря deceze , lechlukasz и VolkerK в комментариях для предоставления ответа.