0

我从来没有尝试过自己生成密码,但是在大公司一直被黑客入侵的今天,我觉得强加密码更安全(生成并且不要让更改,除非获得新生成的重置密码)。原因是,由于用户倾向于重复使用密码,因此您被黑客入侵意味着他们在其他网站上不安全,但其他网站被黑客入侵也意味着他们的帐户可能会在我的帐户上受到损害。

所以我尝试了这一点,但我知道这是一个复杂的主题,而且大多数人每次询问时都会弄错很多东西,我想检查一下我是否遗漏了任何明显破坏密码强度的东西。

string GeneratePassword (int length)
{   
    var bytes = new byte[length];
    // Don't store and reuse a generator to avoid predictable sequences.
    var generator = System.Security.Cryptography.RNGCryptoServiceProvider.Create();
    generator.GetBytes(bytes);
    var chars = new char[]
    {
        'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
        'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
        '0','1','2','3','4','5','6','7','8','9','!','.'
    };
    return new string(bytes
        .Select(b=>chars[b%64])
        .ToArray());
}

我选择了一组 64 个字符进行映射,因为它是 256 的除数(因此没有字符会更频繁地重复),并且在安全性和向用户推送丑陋字符之间似乎取得了不错的平衡。

任何建议都是最受欢迎的,但我的问题是“这是一种安全/安全的方式来生成密码,还是我错过了某种形式的模式/弱点,可以使这个被利用?”

4

0 回答 0