Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Convert.FromBase64String, Бред-Error 
V
    Опции темы
Ivankult
Дата 1.12.2010, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 8.9.2008

Репутация: нет
Всего: нет



Добрый день. Понимаю всю тупость вопроса, но уже долго не могу сам разобраться.
есть БД учетных записей. В ней надо хранить не сами пароли, а их хеши.

Так я получаю хеш:
Код

            SHA256 ShaM = new SHA256Managed();            
            byte[] cryptos = ShaM.ComputeHash(Convert.FromBase64String(newPassword));
            string encPassword = Convert.ToBase64String(cryptos);


Но иногда этот кусок кода работает коректно, а иногда-вылетает с ошибкой:

Недопустима длина массива знаков Base-64.

Это происходит, если newPassword имеет длину меньше 4 или больше 8. А если пароль будет 12 знаков? как с этим бороться?

Заранее благодарю
PM MAIL ICQ   Вверх
jonie
Дата 1.12.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата

Код

            byte[] cryptos = ShaM.ComputeHash(Convert.FromBase64String(newPassword));


это написан бред. Зачем тут Convert.FromBase64String ?


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
i2m
Дата 1.12.2010, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 4.5.2010

Репутация: нет
Всего: 1



Во первых зачем SHA256? Для этих целей есть MD5. Зачем тут вообще BASE64? Что бы запутать хеш что ли? Если да, то так не когда не делается, а вызывается повторное хеширование типа CalculateMD5Hash(CalculateMD5Hash(password))

Код

        public string CalculateMD5Hash(string input)
        {
            var md5 = MD5.Create();
            var bytes = System.Text.Encoding.ASCII.GetBytes(input);
            var hash = md5.ComputeHash(bytes);

            // Переводим в 16 систему счисления.
            var sb = new StringBuilder(32);
            for (var i = 0; i < hash.Length; i++)
            {
                sb.Append(hash[i].ToString("X2"));
            }
            return sb.ToString();
        }

 

Это сообщение отредактировал(а) i2m - 1.12.2010, 16:55
PM MAIL   Вверх
jonie
Дата 1.12.2010, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



i2m, md5 вообще-то вскрыт


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
i2m
Дата 1.12.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 4.5.2010

Репутация: нет
Всего: 1



jonie, Что значит вскрыт? Подбор по словарям что ли? Или брутфорс? Что мешает сделать свой стиль шифрования? Например вызов 10 раз вычисление MD5, полученный MD5 уже не возможно будет подобрать (Имеется ввиду если не знать точный алгоритм вычисления) и коллизии никто не отменял, 2 одинаковых хеша, не значит что было одно и тоже начальное значение. CalculateMD5Hash(CalculateMD5Hash(password) + mykey) Если не известен mykey то и не чего подобрать уже нельзя будет. А вообще это тема спорная конечно, тут все зависит от того что хочешь добиться.
PM MAIL   Вверх
Ivankult
Дата 1.12.2010, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 181
Регистрация: 8.9.2008

Репутация: нет
Всего: нет



все, разобрался. Теперь выглядит так:

byte[] cryptos = ShaM.ComputeHash(Encoding.ASCII.GetBytes(newPassword));
--------------------
Стив Макконнелл: «Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете».
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0731 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.