Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Convert.FromBase64String |
Автор: Ivankult 1.12.2010, 13:59 | ||
Добрый день. Понимаю всю тупость вопроса, но уже долго не могу сам разобраться. есть БД учетных записей. В ней надо хранить не сами пароли, а их хеши. Так я получаю хеш:
Но иногда этот кусок кода работает коректно, а иногда-вылетает с ошибкой: Недопустима длина массива знаков Base-64. Это происходит, если newPassword имеет длину меньше 4 или больше 8. А если пароль будет 12 знаков? как с этим бороться? Заранее благодарю |
Автор: jonie 1.12.2010, 14:24 | ||||
это написан бред. Зачем тут Convert.FromBase64String ? |
Автор: i2m 1.12.2010, 15:26 | ||
Во первых зачем SHA256? Для этих целей есть MD5. Зачем тут вообще BASE64? Что бы запутать хеш что ли? Если да, то так не когда не делается, а вызывается повторное хеширование типа CalculateMD5Hash(CalculateMD5Hash(password))
|
Автор: jonie 1.12.2010, 15:33 |
i2m, md5 вообще-то вскрыт |
Автор: i2m 1.12.2010, 15:53 |
jonie, Что значит вскрыт? Подбор по словарям что ли? Или брутфорс? Что мешает сделать свой стиль шифрования? Например вызов 10 раз вычисление MD5, полученный MD5 уже не возможно будет подобрать (Имеется ввиду если не знать точный алгоритм вычисления) и коллизии никто не отменял, 2 одинаковых хеша, не значит что было одно и тоже начальное значение. CalculateMD5Hash(CalculateMD5Hash(password) + mykey) Если не известен mykey то и не чего подобрать уже нельзя будет. А вообще это тема спорная конечно, тут все зависит от того что хочешь добиться. |
Автор: Ivankult 1.12.2010, 17:36 |
все, разобрался. Теперь выглядит так: byte[] cryptos = ShaM.ComputeHash(Encoding.ASCII.GetBytes(newPassword)); |