2013-02-22 2 views
0

В настоящее время я работаю над приложением .NET, который нуждается в шифровании данных, которые получают хранятся в базе данных 2008 в SQL Server.Использование SHA256 в PasswordDeriveBytes

Я использовал AES шифрования и ключ генерируется с использованием пароля и соли комбинации, которые перемешаны с использованием SHA1 по PasswordDeriveBytes. Теперь мне нужно изменить хэш-алгоритм на SHA256, и насколько я знаю PasswordDeriveBytes принимает только MD5 и SHA1 как параметры хэш-функции. Я просто хочу знать, могу ли я использовать PasswordDeriveBytes для реализации SHA256.

Если нет, то какой альтернативный встроенный класс в .NET для этой же цели? Могу ли я реализовать его вручную? Если внедрение вручную является единственным решением, мне может понадобиться помощь в этом. Заранее спасибо.

ответ

0

Альтернативный вариант Rfc2898DeriveBytes. Это гораздо безопаснее использовать, особенно если вам требуется более 20 байтов вывода. Это, конечно, несовместимо с PasswordDeriveBytes. PasswordDeriveBytes просто разбивается на любое значение более 20 байтов. К сожалению, PBKDF2 также имеет недостаток: он повторяет все итерации для любого значения по размеру хеша. В этом случае вы можете связать его с KBKDF.

Так что, похоже, вы не можете сделать это, не обращаясь к дополнительной библиотеке. Вот где может зайти Bouncy Castle. Он имеет функцию PBKDF2, которую вы можете просто инициализировать с помощью HMAC, который, в свою очередь, можно инициализировать с помощью заданного алгоритма хеширования. Пожалуйста, смотрите использование PBKDF2 в this проблемах с stackoverflow. Вы можете просто заменить дайджест Sha256Digest, и вы должны быть на вашем пути.

Примечание: в криптографии нет ничего простого, похоже, для этого вам нужен источник вдохновения.

+0

Он также не поддерживает SHA-256, и чтение> 20 байтов может быть более безопасным, но по-прежнему плохой идеей читать больше, чем размер хэша от PBKDF2. – CodesInChaos

+0

Это именно то, что я хочу: алгоритм, который будет реализовывать то, что PasswordDeriveBytes делает с паролем и солью, используя SHA1, но он должен идти в SHA256. Есть ли способ? – valyrian

+0

CodesInChaos, какой алгоритм использует Rfc2898DeriveBytes для пароля + соль? Я спрашиваю, потому что в его конструкторе нет спецификации алгоритма хеширования. – valyrian