Php 如何匹配sha256输出

Php 如何匹配sha256输出,php,sh,sha,Php,Sh,Sha,我有一个使用编译过的二进制文件生成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="${P

我有一个使用编译过的二进制文件生成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));
不幸的是,我无法在服务器上运行已编译的二进制文件,因为它要求在服务器(Centos 7)上不可用的glib2.28版本。

您的shell代码

SDATA="${PROD}\$${SEC}\$${EXPIRE}"
鉴于您的php具有:

$data = $params['Prod'].$sec;
从外壳代码中删除美元和到期日:

SDATA="${PROD}${SEC}"
或者将它们添加到php中:

$data = $params['Prod'] . '$' . $sec . '$' . $params['Expire'];
您的shell代码已被删除

SDATA="${PROD}\$${SEC}\$${EXPIRE}"
鉴于您的php具有:

$data = $params['Prod'].$sec;
从外壳代码中删除美元和到期日:

SDATA="${PROD}${SEC}"
或者将它们添加到php中:

$data = $params['Prod'] . '$' . $sec . '$' . $params['Expire'];