php crypt blowfish,php – Blowfish盐长度为Crypt()函数?

根据

crypt() documentation,盐需要从字母“./0-9A-Za-z”的22个64位数字.

这是他们给出的代码示例:

crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$');

第一个令人困惑的部分是盐有25个字符,而不是22.

问题1:这是否意味着盐应该长于22个字符?

然后我自己测试了这个功能,注意到了一些.如果我使用20个字符的盐,我得到这个

// using 20 char salt: 00000000001111111111

crypt('rasmuslerdorf', '$2a$07$00000000001111111111$');

// $2a$07$00000000001111111111$.6Th1f3O1SYpWaEUfdz7ieidkQOkGKh2

所以,当我使用一个20字符的盐,整个盐在输出.这是方便的,因为我不必将盐分存放在一个单独的地方. (我想用随机盐).我可以从生成的哈希中读出盐.

但是,如果我使用22个字符的盐作为文件说,或更长的盐,盐被切断在最后.

// using 22 char salt: 0000000000111111111122

crypt('rasmuslerdorf', '$2a$07$0000000000111111111122$');

// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui

// 22nd character of the salt is gone

// using 25 char salt: 0000000000111111111122222

crypt('rasmuslerdorf', '$2a$07$0000000000111111111122222$');

// $2a$07$000000000011111111112uRTfyYkWmPPMWDRM/cUAlulrBkhVGlui

// Same hash was generated as before, 21 chars of the salt are in the hash

问题2:那么盐的适当长度究竟是多少? 20? 22?更长?

问题3:另外,当查询密码的时候,读取哈希的盐是个好主意吗?而不是将盐储存在一个单独的领域,并从那里读取它. (这似乎是多余的,因为盐似乎包含在哈希中).

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值