如何匹配sha256输出
how to match sha256 output
我有一个设备使用编译的二进制文件生成 sha256 密钥,需要在使用 php (7.3) 的服务器上进行身份验证,并且使用相同的数据生成的密钥不同,但它们应该匹配.
二进制文件与此处发布的 .sh 文件相同。
我错过了什么?
这是.sh代码
#!/bin/sh
SEC="xyxyxyxyxyxyxyxyxyxyxyxyxyxyxy"
if [ -z ]
then
PROD=$(cat prod.txt)
else
PROD=
EXPIRE=
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) 上不可用。
您的shell代码有
SDATA="${PROD}$${SEC}$${EXPIRE}"
而您的 php 有:
$data = $params['Prod'].$sec;
从 shell 代码中删除美元和有效期:
SDATA="${PROD}${SEC}"
或将它们添加到 php:
$data = $params['Prod'] . '$' . $sec . '$' . $params['Expire'];
我有一个设备使用编译的二进制文件生成 sha256 密钥,需要在使用 php (7.3) 的服务器上进行身份验证,并且使用相同的数据生成的密钥不同,但它们应该匹配.
二进制文件与此处发布的 .sh 文件相同。
我错过了什么?
这是.sh代码
#!/bin/sh
SEC="xyxyxyxyxyxyxyxyxyxyxyxyxyxyxy"
if [ -z ]
then
PROD=$(cat prod.txt)
else
PROD=
EXPIRE=
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) 上不可用。
您的shell代码有
SDATA="${PROD}$${SEC}$${EXPIRE}"
而您的 php 有:
$data = $params['Prod'].$sec;
从 shell 代码中删除美元和有效期:
SDATA="${PROD}${SEC}"
或将它们添加到 php:
$data = $params['Prod'] . '$' . $sec . '$' . $params['Expire'];