Как зашифровать пароли и добавить их в базу данных sql? - PullRequest
0 голосов
/ 26 июня 2018

Мне было интересно, как мне зашифровать свои пароли и затем добавить их в мою базу данных, но также проверить это.У меня есть некоторый код, который я собираюсь оставить, который мой друг сказал использовать, но он не скажет мне, как его использовать.Честно говоря, я сам не знаю, как им пользоваться, поэтому я и пришел сюда.Вот кодМне также было интересно, как разделить имя пользователя и пароль для этого.Я использую библиотеку MySql.Data.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace ClassCreation
{
  class PasswordProtection
  {
    public string Hash(string text)
    {
        byte[] salt;
        new RNGCryptoServiceProvider().GetBytes(salt = new byte[16]);
        var pbkdf2 = new Rfc2898DeriveBytes(text, salt, 10000);
        byte[] hash = pbkdf2.GetBytes(20);
        byte[] hashBytes = new byte[36];
        Array.Copy(salt, 0, hashBytes, 0, 16);
        Array.Copy(hash, 0, hashBytes, 16, 20);
        string savedPasswordHash = Convert.ToBase64String(hashBytes);
        return savedPasswordHash;
    }
    public bool Match(string password, string savedPasswordHash)
    {
        byte[] hashBytes = Convert.FromBase64String(savedPasswordHash);
        byte[] salt = new byte[16];
        Array.Copy(hashBytes, 0, salt, 0, 16);
        var pbkdf2 = new Rfc2898DeriveBytes(password, salt, 10000);
        byte[] hash = pbkdf2.GetBytes(20);
        for (int i = 0; i < 20; i++)
            if (hashBytes[i + 16] != hash[i])
                return false;
            else
                return true;
        return false;
    }
}
      }

1 Ответ

0 голосов
/ 26 июня 2018

Идея хранения паролей в базе данных основана на возможности их безопасного хранения.Шифрование подразумевает, что независимо от того, что криптография защищает, эти значения могут быть обращены , что нам не нужно.Вместо этого вы хотите необратимо хэшировать пароли.

Код, который вы представили, хэширует пароль с так называемой солью - массивом случайных байтов, введенных в пароль для маскировки содержимого.Основанием для этого является то, что атака методом "грубой силы" (радужная таблица и т. Д.) Может работать против часто используемых паролей.

Вместо использования этого кода я настоятельно рекомендую провести некоторое расследование по поводу посола и хэширования.

...