有什么理由不要在电子邮件地址上使用bcrypt?

扫罗

我正在处理的登录表单现在使用用户电子邮件地址和密码登录。所以我在想,为什么我不应该在电子邮件地址上使用bcrypt呢?

$email_hash = password_hash($email, PASSWORD_DEFAULT);

我知道它是用于密码的,那又如何呢?也应该适用于电子邮件...如果使用电子邮件登录,是否不应该像密码一样对哈希进行散列/加盐处理?我知道这不是标准做法,但从不了解原因。

我不一定需要知道用户的电子邮件地址。我的意思是,这并不是说我要和他们聊天。也许当用户被禁止时,我应该通过电子邮件通知他们,但为什么要一开始就告知非法行为。

乔纳森

您需要电子邮件地址来查找用户记录。

通常,您会执行以下操作:

function create_account(email, password) {
    var pwhash = password_hash($password, PASSWORD_BCRYPT);
    // insert into users values ($email, $pwhash);
}

function login(email, password) {
    // select pwhash from users where email = $email;
    return password_verify($password, $pwhash); // true or false
}

password_hash($email) 会始终返回不同的值,因为bcrypt在哈希中包含盐。

来自维基百科

例如,[bcrypt hash] $ 2a $ 10 $ N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy指定成本参数10,表示进行了210次密钥扩展。盐为N9qo8uLOickgx2ZMRZoMye,所得哈希为IjZAgcfl7p92ldGxad68LJZdL17lhWy。

或从PHP docs

请注意,password_hash()返回算法,成本和盐值作为返回的哈希值的一部分。因此,其中包含了验证哈希所需的所有信息。这允许验证功能验证哈希,而无需单独存储盐或算法信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么电子邮件地址中的@有时在网页上写为[at]?

来自分类Dev

使用jQuery验证Keyup上的电子邮件地址

来自分类Dev

为什么要在其中添加“ + randomwords”以允许删除所有电子邮件到该电子邮件地址?

来自分类Dev

bcrypt散列电子邮件地址和密码

来自分类Dev

使用mailcore(iOS),如何从特定电子邮件地址获取所有电子邮件?

来自分类Dev

使用mailcore(iOS),如何从特定电子邮件地址获取所有电子邮件?

来自分类Dev

在电子邮件地址jQuery验证上需要域

来自分类Dev

Jekyll上的绝对电子邮件地址

来自分类Dev

隐藏UserUpdateForm上的电子邮件地址

来自分类Dev

从Tripadvisor网页上抓取电子邮件地址

来自分类Dev

电子邮件地址格式“名称<email>”叫什么?

来自分类Dev

即使在域帐户中,也要在Windows 10登录屏幕上显示电子邮件地址

来自分类Dev

雷鸟-显示所有电子邮件地址

来自分类Dev

使用字典提取电子邮件地址。某些键有多封电子邮件,如何发送到所有电子邮件?

来自分类Dev

使用Plesk的服务器上的外发电子邮件地址

来自分类Dev

在Regex上使用grep从文件中获取电子邮件地址不起作用?

来自分类Dev

如何使用Firebase电子邮件地址验证

来自分类Dev

使用Python验证电子邮件地址

来自分类Dev

仅使用CSS保护电子邮件地址

来自分类Dev

使用Laravel解析电子邮件地址

来自分类Dev

使用Corona SDK的电子邮件地址验证

来自分类Dev

使用AWS进行电子邮件地址转发

来自分类Dev

条带多个客户使用相同的电子邮件地址

来自分类Dev

如何使用Express / Node确认电子邮件地址?

来自分类Dev

如何使用vuelidate验证电子邮件地址?

来自分类Dev

如何使用Python解码编码的电子邮件地址?

来自分类Dev

使用+或。在电子邮件地址的用户名部分

来自分类Dev

如何使用Selenium Python打印电子邮件地址

来自分类Dev

使用regex.replace替换电子邮件地址

Related 相关文章

  1. 1

    为什么电子邮件地址中的@有时在网页上写为[at]?

  2. 2

    使用jQuery验证Keyup上的电子邮件地址

  3. 3

    为什么要在其中添加“ + randomwords”以允许删除所有电子邮件到该电子邮件地址?

  4. 4

    bcrypt散列电子邮件地址和密码

  5. 5

    使用mailcore(iOS),如何从特定电子邮件地址获取所有电子邮件?

  6. 6

    使用mailcore(iOS),如何从特定电子邮件地址获取所有电子邮件?

  7. 7

    在电子邮件地址jQuery验证上需要域

  8. 8

    Jekyll上的绝对电子邮件地址

  9. 9

    隐藏UserUpdateForm上的电子邮件地址

  10. 10

    从Tripadvisor网页上抓取电子邮件地址

  11. 11

    电子邮件地址格式“名称<email>”叫什么?

  12. 12

    即使在域帐户中,也要在Windows 10登录屏幕上显示电子邮件地址

  13. 13

    雷鸟-显示所有电子邮件地址

  14. 14

    使用字典提取电子邮件地址。某些键有多封电子邮件,如何发送到所有电子邮件?

  15. 15

    使用Plesk的服务器上的外发电子邮件地址

  16. 16

    在Regex上使用grep从文件中获取电子邮件地址不起作用?

  17. 17

    如何使用Firebase电子邮件地址验证

  18. 18

    使用Python验证电子邮件地址

  19. 19

    仅使用CSS保护电子邮件地址

  20. 20

    使用Laravel解析电子邮件地址

  21. 21

    使用Corona SDK的电子邮件地址验证

  22. 22

    使用AWS进行电子邮件地址转发

  23. 23

    条带多个客户使用相同的电子邮件地址

  24. 24

    如何使用Express / Node确认电子邮件地址?

  25. 25

    如何使用vuelidate验证电子邮件地址?

  26. 26

    如何使用Python解码编码的电子邮件地址?

  27. 27

    使用+或。在电子邮件地址的用户名部分

  28. 28

    如何使用Selenium Python打印电子邮件地址

  29. 29

    使用regex.replace替换电子邮件地址

热门标签

归档