Программное обеспечение SSO, которое я пытаюсь использовать, возвращает закодированный токен URL, из которого пользователь генерирует солт-значение. Например:
$iterations = 1000;
$token="SaIp-gpEFreOJTtrhXuboFAwoBVs0PwgRpKbcTFNAQDRmTN2csxN775kjdhPYSe0tXvctPe0tkf_E48U2Jeetg2"$salt = base64url_decode($token);
$idAndKey="[email protected]"+"aE1k9-djZ66WbUATqdHbWyJzskMI5ABS0";
$key=hash_pbkdf2('sha1',$idAndKey,$salt,$iterations,32,true);
$enKey= base64url_encode($key);//returns NTZkMjZhOWE5YjU2NDQ2NDY5NWE4MDFlNDIwNTA4NWU=
Но C # возвращает CPC4OPRZEC1CLVOKDfQK7fv7iwuETvrF0 для тех же параметров. Вот код C #
HASH_BYTES = 24;
HASH_ITERATIONS = 1000;
var token = "SaIp-gpEFreOJTtrhXuboFAwoBVs0PwgRpKbcTFNAQDRmTN2csxN775kjdhPYSe0tXvctPe0tkf_E48U2Jeetg2";
string idAndKey="[email protected]"+"aE1k9-djZ66WbUATqdHbWyJzskMI5ABS0";
Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(idAndKey, HttpServerUtility.UrlTokenDecode(token)) { IterationCount = HASH_ITERATIONS };
var key = HttpServerUtility.UrlTokenEncode(pbkdf2.GetBytes(HASH_BYTES));
Буду признателен за любой вклад.
Задача ещё не решена.
Других решений пока нет …