これは、c# と php が sha1 ハッシュをエンコードする方法が異なるため問題があることは承知していますが、ac# sha1 の php バージョンの例を見つけることができませんでした。
c# コード:
private string GetHashedKey(string supplierPrivateKey, DateTime now)
{
if (string.IsNullOrEmpty(supplierPrivateKey))
return "";
supplierPrivateKey += now.ToString("yyyy/MM/dd HH:mm:ss");
Encoding enc = Encoding.UTF8;
byte[] buffer = enc.GetBytes(supplierPrivateKey);
SHA1CryptoServiceProvider cryptoTransformSha1 =
new SHA1CryptoServiceProvider();
string hash = BitConverter.ToString(
cryptoTransformSha1.ComputeHash(buffer)).Replace("-", "");
return hash;
}
php:
$hashedSupplierPrivateKey = $supplierPrivateKey.gmdate("Y/m/d H:i:s");
$hashedSupplierPrivateKey = utf8_encode($hashedSupplierPrivateKey);
$hashedSupplierPrivateKey = sha1($hashedSupplierPrivateKey,true);
//Error here
$hashedSupplierPrivateKey = str_replace("-", "", $hashedSupplierPrivateKey);
$hashedSupplierPrivateKey = strtoupper($hashedSupplierPrivateKey);
echo $hashedSupplierPrivateKey;
C# で生成された正しいハッシュの例を次に示します。
530DFA9CD08CF36017B7C781E1A8D0CEC74CB944