ranio Ответов: 1

Как получить пароль из дайджеста паролей из API, представленного в ASP.NET с помощью C# через webservice во время дайджест-аутентификации пароля?


Я хочу получить пароль из дайджеста паролей из размещенного API в asp.net с помощью c# через веб-сервис, потребляя то же самое во время дайджест-аутентификации пароля

Password Digest Creation Logic
Password_Digest =  Base64(SHA-1(nonce + created + password ))

Запрос API создан с дайджеста пароля,nounce и время создания штампа в мыло узла заголовка конверта и подвержены промежуточное программное обеспечение через веб-сервис.
Я хочу получить пароль из значения дайджеста пароля в теге заголовка конверта Soap в API ответа,который будет содержать значение дайджеста пароля, Noun и созданное значение метки времени.
Мне нужно пройти аутентификацию из логики создания API запроса, как описано выше, а затем только разрешить доступ и предоставить ответ обратно.

Что я уже пробовал:

Мой пример запроса XML с дайджестом паролей выглядит следующим образом:

<string xmlns="http://tempuri.org/"><soapenv:envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t24="https://soa.nbf.ae/T24Service/"> <soapenv:header> <wsse:security soapenv:mustunderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <wsse:usernametoken wsu:id="UsernameToken-8" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wsse:username>alex.jr <wsse:password type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Fp2VQAFpZKHBp08DjXf/lX4cm58= <wsse:nonce encodingtype="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">tqTc87Gz7mCUVSslHuuisQ== <wsu:created>2020-01-13T10:46:54.412Z <soapenv:body> <sendtot24request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <request> <company>Test <user_name>alex.jr <message_id>312313 <transaction_id>102 <external_ref_id>0000120

1 Ответов

Рейтинг:
1

OriginalGriff

Если по

Цитата:
"Я хочу получить пароль из дайджеста паролей"
ты имеешь в виду
Цитата:
"Я хочу получить исходный текст пароля обратно"
Тогда вы не можете: SHA-это не алгоритм шифрования, это алгоритм хэширования. Разница проста: функции хеширования вообще не могут быть обращены для получения исходных входных данных - в этом весь смысл использования их для хранения паролей (предпочтительно со значением соли, чтобы предотвратить идентичные пароли, имеющие идентичные хэши).

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


ranio

В API запроса нет тега пароля . Из значения дайджеста пароля мне нужно получить текст пароля обратно при использовании образца API запроса, Как упоминалось выше, и пройти аутентификацию .

OriginalGriff

Я повторяю: "ты не можешь".

Password_Digest = Base64(SHA-1(nonce + created + password ))

SHA-это хэш, а не шифрование. Она не может быть обращена вспять.

Dave Kreskowiak

Подумайте о риске безопасности, который был бы, если бы вы могли так легко получить пароль любой учетной записи. Есть очень веские причины, почему вы не можете этого сделать.

Richard Deeming

Для ясности, SHA-1-это сильно разбитая алгоритм хэширования. Он не считался безопасным по крайней мере с 2005 года, а все основные браузеры отказались от поддержки в 2017 году. :)