PHP mcrypt_create_iv返回问号和不正确的长度 - CodeIgniter

时间:2013-12-02 16:00:57

标签: php codeigniter salt mcrypt

我正在尝试使用mcrypt_create_iv生成随机盐。当我测试盐是否通过回声产生盐时,它会检出,但它不是我作为参数传递给它的所需长度(32),而是小于它。

但是当我将它存储在我的数据库表中时,它显示为类似K??5P?M???4?o???"?0??

的内容

我确定它与数据库有关,但我试图更改它的排序规则以对应CI的配置设置,即utf8_general_ci,但它不能解决问题,而是生成一个更小的盐。

有谁知道可能有什么问题?感谢您的任何反馈/帮助

1 个答案:

答案 0 :(得分:1)

函数mcrypt_create_iv()将返回一个二进制字符串,其中包含\ 0和其他不可读的字符。根据您想要使用盐的方式,首先必须编码这些字节字符串到接受的字母表。也可以在数据库中存储二进制字符串,但当然您将无法显示它们。

由于salt通常用于密码存储,我建议看一下PHP的函数password_hash(),它会自动生成一个盐并将其包含在生成的哈希值中,所以你不需要盐的单独数据库字段。