【问题标题】:salt in every password yii每个密码都加盐 yii
【发布时间】:2015-04-02 04:41:41
【问题描述】:

我有一个名为 salt 的表格列,它是必填字段,但我不想让用户输入自己的 salt 我们的系统有没有办法为每个通过 sha1 加密的密码生成盐?

【问题讨论】:

    标签: yii passwords salt


    【解决方案1】:

    你正在使用 Yii,所以让我们用 YII 风格

    我用

    Yii::app()->securityManager->generateRandomString($length,true)

    要了解它,请点击here

    【讨论】:

    • 我想试试这个,但是你把它放在哪里呢?在控制器中?非常抱歉我的知识不足,我刚开始yii
    • 我有一个助手类,我有这个函数来生成随机字符串。可以放在组件中
    【解决方案2】:

    Yii 框架提供了一个类CPasswordHelper,它生成安全的 BCrypt 哈希,每个密码都包含一个盐。有了这个类,你可以不用单独的盐字段。 Yii 文档中的一个例子:

    $hash = CPasswordHelper::hashPassword($password);
    
    if (CPasswordHelper::verifyPassword($password, $hash))
        // password is good
    else
        // password is bad
    

    【讨论】:

    • 问题已经解决了先生,但我很感激,这样真的更容易
    • @shychotc - 很高兴听到您可以解决您的问题。请注意,SHA-* 不适用于散列密码,因为它的设计速度很快,因此很容易被暴力破解。
    【解决方案3】:

    您可以为每个条目使用一个随机值作为盐。只要它看起来是随机的,值是什么并不重要。

    检查此链接: https://crackstation.net/hashing-security.htm

    【讨论】:

    【解决方案4】:

    在 PHP 中使用最简单的加密和解密信息

    $salt ='whatever_you_want';
    function simple_encrypt($text)
    {
        return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
    }
    function simple_decrypt($text)
    {
        return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
    }
    

    【讨论】:

    • 密码不应以加密格式存储,而应使用单向哈希函数。顺便说一句,ECB 模式不接受 IV 向量,您可能会得到长度为 0 的 IV。
    猜你喜欢
    • 1970-01-01
    • 2014-01-24
    • 2015-07-19
    • 2016-04-09
    • 2014-05-03
    • 2010-11-30
    • 2012-07-05
    • 2011-08-24
    • 2013-09-22
    相关资源
    最近更新 更多