我在php中使用openssl_random_pseudo_bytes
函数生成盐。但是,我无法将输出存储到PostgreSQL数据库中。
我得到一个错误:
错误:编码"UTF8"的字节序列无效
现在我意识到有问题的数据库的编码被设置为UTF8,并且函数的输出不匹配,但是解决这个问题的正确方法是什么?
这是一个随机的盐,我担心通过任何过程将其转换为UTF8将不再使其加密安全?
openssl_random_pseudo_bytes
函数输出二进制数据,我试图将输出存储在数据类型为字符变化的数据库字段中,错误地将其视为字符串。
bytea
是PostgreSQL数据库中字段的正确数据类型。
更新:此外,似乎您需要在输出上使用pg_escape_bytea
才能实际将二进制数据插入数据库。
感谢 decze , lechlukasz和VolkerK在评论中提供答案。