Первый: Избавьтесь от utf8_encode()
и просто вообще не используйте его. Предполагается, что входной строкой является ISO-88591-1, и если это что-нибудь еще , то данные будут молча повреждены. Эта функция имеет невероятно вводящее в заблуждение имя, и я бы сказал, что никто не должен ее использовать или соответствующий utf8_decode()
, который будет ломать ваши данные таким же образом, но в обратном порядке.
Если вам нужно преобразовать строковые кодировки в PHP, используйте что-то, что явно определяет входные и выходные кодировки, например: mb_convert_encoding()
. [тебе это все еще не нужно]
Второе: Что бы вы ни думали decbin()
, вы ошибаетесь. Он преобразует целое число в буквальную строковую строку S, состоящую из 0
и 1
символов .
Третье: Строки PHP не имеют встроенной кодировки и примерно эквивалентны байтовым массивам, если вы вывернули мою руку для описания. Байты, которые вы вставляете в них, являются байтами, которые вы из них получаете.
Четвертый: Я не совсем эксперт C # [или промежуточный, или даже новичок ], но этот пример кода ужасен. Какое значение имеет N
в connectionId.ToString("N")
? Я не могу найти документацию по этому поводу.
Начните с простого, используйте значимые имена переменных, создайте и прочитайте документы .
$connectionID = strtolower('5fecbc200f0e4a7cbf41040e11047e56');
$apiKey = strtolower('2de51c4fd0f04b9fabeb95225e87da70');
$hash = hash_hmac("sha1", $connectionID, $apiKey, true);
var_dump(base64_encode($hash));
Выход:
string(28) "m5/Vc1RzhUETQvEtx/JdIglQpTg="