c# into php(crypt)

Vin-Diesel

Новичок
c# into php(crypt)

есть код на c#
Код:
Public static string ProduceKey(string mac)
{
string key = mac.Substring(6, 6);
HMACSHA256 sha = new HMACSHA256(Encoding.Default.GetBytes(key));
byte[] bytes = sha.ComputeHash(Encoding.Default.GetBytes(mac));

string res = "";
foreach (byte b in bytes)
res += b.ToString();

return res.Substring(0, 16);
}
Как его перевести на PHP? конкретно интересуют функции шифровки, есть ли аналоги в пхп
 

akd

dive now, work later
Команда форума
[m]hash[/m] и указать алгоритм sha256
 

Vin-Diesel

Новичок
Правильно ли я получаю ключ?
PHP:
function ProduceKey($mac) {
 $key = '';
 for($i = 6; $i <= 12; $i++)
  $key .= ord(substr($mac, $i, 1));
 ...
}
 

akd

dive now, work later
Команда форума
я бы делал как-то так:
$tmp = substr($mac, 6, 6);
$key = '';
for ($i = 0; $i < 6; $i++) {
$key .= ord($tmp[$i]);
}
 

Вурдалак

Продвинутый новичок
Нет, неправильно.

В PHP (во всяком случае < PHP 6.0.0) все строки бинарные.

Саму функцию хеширования смотри тут: http://php.net/manual/en/function.hash-hmac.php

Но тут есть тонкий момент, связанный с кодировкой. Encoding.Default.GetBytes() на разных машинах может возвращать разные массивы байт.
 

akd

dive now, work later
Команда форума
да, я натупило.
про кодировки исправляется если не использовать Encoding.Default a, например, Encoding.ASCII
 
Сверху