我正在使用 php.ini 中的openssl_random_pseudo_bytes
函数生成盐。但是,我无法将输出存储到 PostgreSQL 数据库中。
我收到一个错误:
错误:编码“UTF8”的字节序列无效
现在我意识到有问题的数据库的编码设置为UTF8,并且函数的输出不匹配,但是解决这个问题的正确方法是什么?
这是一种随机盐,我担心通过任何过程将其转换为 UTF8 将不再使其加密安全?
我正在使用 php.ini 中的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
在输出上使用才能将二进制数据实际插入数据库。
感谢deceze、lechlukasz和VolkerK在评论中提供答案。