Существует ли стандартный способ создания хэша пароля в Microsoft? - PullRequest
3 голосов
/ 21 октября 2010

Существует ли стандартный способ создания хэша пароля с помощью инструментов разработки Microsoft?Или, может быть, есть наиболее распространенный способ.(Я читал, что есть MD5, STA1)

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

Вот часть SOAP-запроса, который мне нужно отправить на сервер.Посмотрите на oldPasswordHash.

- <ChangePassword xmlns="urn:____________">
  <sessionGUID>{864da5f3-21b6-486a-8bd3-c507ae3d224e}</sessionGUID> 
  <oldPasswordHash>089ad55bd0a8f6d3c2e2bbf0e4e1475c7e984ef1</oldPasswordHash> 
  <newPasswordHash>f4a69973e7b0bf9d160f9f60e3c3acd2494beb0d</newPasswordHash> 
  </ChangePassword>

Ответы [ 3 ]

6 голосов
/ 21 октября 2010

Это хэши SHA1 несоленных паролей.

f4a69973e7b0bf9d160f9f60e3c3acd2494beb0d - это хеш SHA1 Passw0rd!.

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

В C # вы можете воспроизвести реализацию следующим образом:

public static string Hash(string value)
{
   var sha = new System.Security.Cryptography.SHA1CryptoServiceProvider();
   byte[] hash = sha.ComputeHash(Encoding.ASCII.GetBytes(value));
   return BytesToHex(hash).ToLower();
}

private static string BytesToHex(byte[] bytes)
{
   return String.Concat(Array.ConvertAll(bytes, x => x.ToString("X2")));
}

Для версии Javaвзгляните на первый хит Google 101 "sha1 java" .

1 голос
/ 21 октября 2010

Cygwin для Windows предоставляет инструменты хэширования командной строки, такие как sha1sum, в своем пакете coreutils, которые могут легко вычислить хеш для вас.Библиотеки Bouncy Castle будут обеспечивать реализацию наиболее распространенных алгоритмов хеширования как в Java, так и в .NET.

В примере XML ничего не сказано.Строки являются шестнадцатеричными, длиной 40 символов, что составляет 20 байтов или 160 бит.Это может означать, что это SHA-1 (то есть 160 бит), но не обязательно.Кроме того, как он генерировал хеш из пароля.Был ли текст открытым текстом пароля, открытым текстом с солью, открытым текстом, смешанным с другим хэшем и т. Д. Я думаю, если вы сначала установите sha1sum из командной строки, вы увидите, что произойдет, если вы введете в него пароль.Возможно, вам повезет и вы поймете, что он делает.Затем вы можете приступить к написанию кода с помощью Bouncy Castle.

1 голос
/ 21 октября 2010

Что касается алгоритма хеширования, вам нужна криптографическая хеш-функция , то есть хеш-функция, которую (для всех намерений и целей) невозможно изменить.Также имейте в виду, что существуют файлы (и даже веб-сайты), которые стремятся вычислить каждый хеш-код для каждой строки, и публикуйте эти так называемые Rainbow Tables .( SHA256 кажется мне хорошим выбором.)

Что касается программной генерации, посмотрите на System.Security.Cryptography в .NET.

Что касается инструментов для создания хэшей, я ничего не знаю, что идет с Windows.Очевидно, что вы можете использовать инструменты GNU через Cygwin (или тому подобное) или искать инструмент командной строки для выбранного вами алгоритма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...