У меня есть устройство, использующее скомпилированный двоичный файл для генерации ключа sha256, который должен пройти проверку подлинности на сервере, использующем php (7.3), и с теми же данными полученные ключи отличаются, хотя они должны совпадать.
Двоичный файл совпадает с файлом .sh, размещенным здесь.
Чего мне не хватает?
Вот код .sh
#!/bin/sh
SEC="xyxyxyxyxyxyxyxyxyxyxyxyxyxyxy"
if [ -z $1 ]
then
PROD=$(cat prod.txt)
else
PROD=$1
EXPIRE=$2
fi
SDATA="${PROD}\$${SEC}\$${EXPIRE}"
KEY=$(echo -n ${SDATA} | openssl sha256 -binary | base64)
echo "ABC TXYZ Gen"
echo "Code: ${PROD}"
[ ! -z "${EXPIRE}" ] && echo "Expire date : ${EXPIRE}"
echo "Activate code:"
echo ${KEY%%=} | tee activate.txt
А это php
public function generateActivate($params = [])
{
if (!isset($params['Mod'])) {
return false;
}
if (!isset($params['Prod'])) {
return false;
}
if (!isset($params['Vers'])) {
return false;
}
$sec="xyxyxyxyxyxyxyxyxyxyxyxyxyxyxy
$data = $params['Prod'].$sec;
$params['Activate'] = base64_encode(hash('sha256', $data, true));
К сожалению, я не могу запустить скомпилированный двоичный файл на сервере, так как он запрашивает версию glib2.28, недоступную на сервере (Centos 7).