存储openssl_random_pseudo_bytes的输出在Postgres使用php?我得到一个错误:无效字节序


Storing the output of openssl_random_pseudo_bytes in Postgres using php? I get an error: invalid byte sequence for encoding "UTF8"

我在php中使用openssl_random_pseudo_bytes函数生成盐。但是,我无法将输出存储到PostgreSQL数据库中。

我得到一个错误:

错误:编码"UTF8"的字节序列无效

现在我意识到有问题的数据库的编码被设置为UTF8,并且函数的输出不匹配,但是解决这个问题的正确方法是什么?

这是一个随机的盐,我担心通过任何过程将其转换为UTF8将不再使其加密安全?

openssl_random_pseudo_bytes函数输出二进制数据,我试图将输出存储在数据类型为字符变化的数据库字段中,错误地将其视为字符串。

bytea是PostgreSQL数据库中字段的正确数据类型。

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

更新:此外,似乎您需要在输出上使用pg_escape_bytea才能实际将二进制数据插入数据库。

感谢 decze lechlukaszVolkerK在评论中提供答案。