Алгоритм работы PasswordDigest в WS-Security

У меня возникли проблемы с WS-Security, и я создал правильный одноразовый пароль и дайджест пароля.

Я успешно использую SoapUI для отправки данных в систему Oracle. Так что я'я могу перехватить SoapUI 's call (измените прокси на 127.0.0.1 порт 8888, чтобы использовать Fiddler там, где он выходит из строя, потому чтоs over SSL) - перехват важен, потому что эти значения могут использоваться только один раз. Затем я могу получить одноразовый номер, созданную временную метку и дайджест пароля, вставить их в мой код (яу нас есть только 30 секунд, чтобы сделать это, как значения нет последний!) и я добился успеха.

Так что я знаю этобольше ничего - только дайджест пароля.

Я использую следующие значения:

Nonce: UIYifr1SPoNlrmmKGSVOug==
Created Timestamp: 2009-12-03T16:14:49Z
Password: test8
Required Password Digest: yf2yatQzoaNaC8BflCMatVch/B8=

Я знаю алгоритм создания дайджеста:

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

используя следующий код (изРик Стралс поста)

protected string GetSHA1String(string phrase)
{
    SHA1CryptoServiceProvider sha1Hasher = new SHA1CryptoServiceProvider();
    byte[] hashedDataBytes = sha1Hasher.ComputeHash(Encoding.UTF8.GetBytes(phrase));
    return Convert.ToBase64String(hashedDataBytes);
}

Я получил:

GetSHA1String("UIYifr1SPoNlrmmKGSVOug==" + "2009-12-03T16:14:49Z" + "test8") = "YoQKI3ERlMDGEXHlztIelsgL50M="

Я пробовал различные методы SHA1, все возвращают одинаковые результаты (что, наверное, хорошо!):

SHA1 sha1 = SHA1.Create();
SHA1 sha1 = SHA1Managed.Create();

// Bouncy Castle:
protected string GetSHA1usingBouncyCastle(string phrase)
{
    IDigest digest = new Sha1Digest();
    byte[] resBuf = new byte[digest.GetDigestSize()];
    byte[] bytes = Encoding.UTF8.GetBytes(phrase);
    digest.BlockUpdate(bytes, 0, bytes.Length);
    digest.DoFinal(resBuf, 0);
    return Convert.ToBase64String(resBuf);
}

Любые идеи о том, как получить правильный хэш?

Ответы на вопрос(1)

Ваш ответ на вопрос