0

openssl_random_pseudo_bytesPHPの関数を使用してソルトを生成しています。ただし、出力を PostgreSQL データベースに保存できません。

エラーが発生します:

エラー: "UTF8" をエンコードするための無効なバイト シーケンス

問題のデータベースのエンコーディングが UTF8 に設定されており、関数の出力が一致していないことに気付きましたが、これを解決する正しい方法は何ですか?

これはランダムなソルトであり、どのプロセスを介して UTF8 に変換しても、暗号学的に安全にならないのではないかと心配していますか?

4

1 に答える 1

1

このopenssl_random_pseudo_bytes関数はバイナリ データを出力しますが、出力をデータ型が異なる文字列のデータベース フィールドに格納しようとして、誤って文字列のように扱っていました。

byteaPostgreSQL データベースのフィールドの正しいデータ型です。

http://www.postgresql.org/docs/9.2/interactive/datatype-binary.html

pg_escape_bytea更新: また、実際にバイナリ データをデータベースに挿入できるようにするには、出力で使用する必要があるようです。

回答を提供してくれたコメントのdecezelechlukasz、およびVolkerKに感謝します。

于 2013-03-06T08:17:37.687 に答える