Я почти закончил преобразование PHP-скрипта в C#-один для использования в ASP.net.Преобразование PHP-функции в C#
Я уже конвертированы это, чтобы соответствовать правильный результат до сих пор: -
function sign_url($url, $key, $secret)
{
if (strpos($url,'?') !== false)
{
$url .= "&";
}
else
{
$url .= "?";
}
$url .= "ApplicationKey=" . $key;
$signature = hash_hmac("sha1", urldecode($url), $secret);
$url .= "&Signature=" . hex_to_base64($signature);
return $url;
}
Вот часть я борюсь с: -
function hex_to_base64($hex){
$return = '';
foreach(str_split($hex, 2) as $pair){
$return .= chr(hexdec($pair));
}
return base64_encode($return);
}
Из того, что я могу собрать он разбивает входную строку ($ hex) на наборы из двух символов.
Затем он преобразует эти шестнадцатеричные строки в десятичные числа перед получением значения chr() этого числа.
Хранение всех этих преобразований в строке $ return.
Наконец, это преобразование базы 64.
Я изо всех сил стараюсь найти лучший способ сделать это на C#, в частности, расщепление на 2 символа при выполнении других преобразований.
'до получения Chr()', что именно в том, что должен делать? Насколько я понимаю, вам нужно проанализировать две строки символов как шестнадцатеричное число, а затем получить эквивалент 'char'. Это верно? –
Теперь я добавил первую часть кода для ясности. Из того, что я могу собрать, вы правы. Он проходит в строке, такой как «B709E79EA2769A409FF87FE87AC1F6799EE0917E» – Porkster
Возможно, вы захотите взглянуть на: http://csharpfunctions.blogspot.co.uk/2010/03/convert-hex-formatted-string-to-base64.html и/или http://stackoverflow.com/questions/7784345/conversion-between-base64string-and-hexadecimal – Jamiec