C # / Java / Ruby - хэш-логин для паролей - Cross-Lang / Platform - PullRequest
0 голосов
/ 30 июля 2010

Какой хороший алгоритм хэширования паролей использовать в C #, если в дальнейшем вы, возможно, узнаете, что будут программы на Java и Ruby, которым также может понадобиться «войти» / аутентифицировать пользователя. Все, что есть в .NET, хорошо переведенное на другие языки и простое в использовании.

Ответы [ 3 ]

2 голосов
/ 30 июля 2010

Самым надежным алгоритмом криптографического хэширования, который стандартизировал NSA / NIST, является SHA-512.

Обязательно используйте случайную соль для пароля (128-разрядная соль, генерируемая криптографически сильным генератором случайных чиселэто хорошо).Или, что еще лучше, обязательно используйте случайный ключ для каждого пароля (снова сгенерированный криптовалютой) и используйте HMAC-SHA-512.Обязательно используйте несколько итераций - 4096 и 65 536 - хорошие круглые числа (2 ^ 12 и 2 ^ 16).

let h = get_hash_hunction("SHA-512")
let k = get_key_for_user("Justice")
let hmac = get_hmac(h, k)
let test = get_bytes("utf-8", http_request_params["password"])
for(i in 0 .. (2^16 - 1))
    let test = run_hmac(hmac, test)
return test == get_hashed_password_for_user("Justice")
1 голос
/ 03 августа 2012

Правильное использование MD5 с добавлением соли делает радужные столы и грубую силу довольно дорогими. Итак, комментарий вполне допустим для использования md5.

0 голосов
/ 30 июля 2010

А, думаю, MD5 является наиболее распространенным.

...