Función CreateMD5SSOHash (wininet.h)
La función CreateMD5SSOHash obtiene la contraseña predeterminada de Microsoft Passport para una cuenta o dominio especificados, crea un hash MD5 a partir de ella mediante una cadena de desafío de caracteres anchos especificado y devuelve el resultado como una cadena de bytes de dígito hexadecimal.
Sintaxis
BOOL CreateMD5SSOHash(
[in] PWSTR pszChallengeInfo,
[in] PWSTR pwszRealm,
[in] PWSTR pwszTarget,
[out] PBYTE pbHexHash
);
Parámetros
[in] pszChallengeInfo
Puntero a la cadena de desafío de caracteres anchos que se va a usar para el hash MD5.
[in] pwszRealm
Puntero a una cadena que asigna un nombre a un dominio para el que se va a obtener la contraseña. Este parámetro se omite a menos que pwszTarget sea NULL. Si pwszTarget y pwszRealm son NULL, se usa el dominio predeterminado.
[in] pwszTarget
Puntero a una cadena que asigna un nombre a una cuenta para la que se va a obtener la contraseña. Si pwszTarget es NULL, se usa el dominio kerberos indicado por pwszRealm .
[out] pbHexHash
Puntero a un búfer de salida en el que se devuelve el hash MD5 en formato de cadena hexadecimal. Este búfer debe tener al menos 33 bytes de longitud.
Valor devuelto
Devuelve TRUE si se ejecuta correctamente o FALSE de lo contrario.
Comentarios
Una vez que la función CreateMD5SSOHash obtiene correctamente la contraseña de Microsoft Passport para la cuenta o dominio especificados, convierte tanto la cadena de desafío como la contraseña de caracteres anchos a caracteres de varios bytes (generalmente de 8 bits), las concatena y usa la biblioteca RSA para generar un hash MD5 a partir de la clave resultante. A continuación, convierte el hash en una cadena terminada en null de dígitos hexadecimales de 8 bits (mediante letras minúsculas) a las que coloca en el búfer al que apunta el parámetro pbHexHash .
El búfer de salida al que apunta pbHexHash debe ser lo suficientemente largo como para aceptar dos bytes para cada uno de los 16 bytes del hash, además de un carácter nulo de terminación, para un total de 33 bytes.
Al igual que todos los demás aspectos de la API de WinINet, esta función no se puede llamar de forma segura desde DllMain ni desde los constructores y destructores de objetos globales.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | wininet.h (incluya Wininet.h) |
Library | Wininet.lib |
Archivo DLL | Wininet.dll |