Я правильно шифрую пароли в ASP.NET? - PullRequest
1 голос
/ 11 марта 2011

У меня есть класс безопасности:

 public class security
{
    private static string createSalt(int size)
    {
        //Generate a random cryptographic number
        RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
        byte[] b = new byte[size];
        rng.GetBytes(b);

        //Convert to Base64
        return Convert.ToBase64String(b);
    }

    /// <summary>
    /// Generate a hashed password for comparison or create a new one
    /// </summary>
    /// <param name="pwd">Users password</param>
    /// <returns></returns>
    public static string createPasswordHash(string pwd)
    {
        string salt = "(removed)";
        string saltAndPwd = string.Concat(pwd, salt);
        string hashedPwd =
            FormsAuthentication.HashPasswordForStoringInConfigFile(
            saltAndPwd, "sha1");

        return hashedPwd;
    }
}

Это прекрасно работает, но мне интересно, достаточно ли этого.

Кроме того, этот следующий блок кода лучше?Overkill?

static byte[] encrInitVector = new byte[] { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };

static string encrKey = "(removed)";

public static string EncryptString(string s)
{
    byte[] key;

    try
    {
        key = Encoding.UTF8.GetBytes(encrKey.Substring(0, 8));

        DESCryptoServiceProvider des = new DESCryptoServiceProvider();

        byte[] inputByteArray = Encoding.UTF8.GetBytes(s);

        MemoryStream ms = new MemoryStream();

        CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(key, encrInitVector), CryptoStreamMode.Write);

        cs.Write(inputByteArray, 0, inputByteArray.Length);

        cs.FlushFinalBlock();

        return Convert.ToBase64String(ms.ToArray());
    }
    catch (Exception e)
    {
        throw e;
    }

1 Ответ

0 голосов
/ 11 марта 2011

Я бы сказал, что последний лучший, излишнее всегда хорошо, но просто взгляните на это изображение.

  • enter image description here

Если ваш сайт не является крупным торговым магазином или банком или что-то такого масштаба, что вам действительно нужна надежная защита, тогда ваш первый код, если достаточно. (Если у вас высокий уровень безопасности пользователя, я бы также рекомендовал SSL.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...