将 google 验证签名代码 (kotlin) 转换为 PHP (laravel)
Convert google verify signature code (kotlin) to PHP (laravel)
我需要验证签名,这是 google 的开发人员 android api 的一项安全功能。
他们有一个用 kotlin 编写的工作示例。
大气压。我正在尝试转换此代码:
val decodedKey = Base64.decode(encodedPublicKey, Base64.DEFAULT)
val keyFactory = KeyFactory.getInstance("RSA")
return keyFactory.generatePublic(X509EncodedKeySpec(decodedKey))
encodedPublicKey
已修复。我从 google.
得到它
我安装了phpseclib
,目前我尝试转换上面的代码:
$decodedKey = base64_decode($encodedPublicKey);
$x509 = new X509();
$x509->loadX509($encodedPublicKey);
$rsa = $x509->getPublicKey();
return [$rsa, $x509];
我发现甚至 base64_decode($encodedPublicKey)
都行不通。它 returns 没什么,而 kotlin 代码 Base64.decode(encodedPublicKey, Base64.DEFAULT)
returns 许多解码键,例如:
D/IABUtil/Security: decodedKey 0 :48
编辑
kotlins Base64.decode(encodedPublicKey, Base64.DEFAULT)
returns 字节数组。我设法通过在 php:
中使用 unpack()
获得了相同的结果
$decodedKey = unpack('c*', $decodedKey); // ByteArray
所以最后我为此使用了 open ssl。
$publicKey = env('BASE_64_ENCODED_PUBLIC_KEY');
$key = "-----BEGIN PUBLIC KEY-----\n" . chunk_split($publicKey, 64, "\n") . "-----END PUBLIC KEY-----";
$key = openssl_get_publickey($key);
if (false === $key) {
return ["Could not get public Key"];
}
$verify = openssl_verify($originalJson, base64_decode($signature), $key, "sha1WithRSAEncryption");
来源:android in app billing v3 with php
将 public 密钥转换为正确的格式很重要。每行必须有 64 个字符。
我需要验证签名,这是 google 的开发人员 android api 的一项安全功能。 他们有一个用 kotlin 编写的工作示例。
大气压。我正在尝试转换此代码:
val decodedKey = Base64.decode(encodedPublicKey, Base64.DEFAULT)
val keyFactory = KeyFactory.getInstance("RSA")
return keyFactory.generatePublic(X509EncodedKeySpec(decodedKey))
encodedPublicKey
已修复。我从 google.
我安装了phpseclib
,目前我尝试转换上面的代码:
$decodedKey = base64_decode($encodedPublicKey);
$x509 = new X509();
$x509->loadX509($encodedPublicKey);
$rsa = $x509->getPublicKey();
return [$rsa, $x509];
我发现甚至 base64_decode($encodedPublicKey)
都行不通。它 returns 没什么,而 kotlin 代码 Base64.decode(encodedPublicKey, Base64.DEFAULT)
returns 许多解码键,例如:
D/IABUtil/Security: decodedKey 0 :48
编辑
kotlins Base64.decode(encodedPublicKey, Base64.DEFAULT)
returns 字节数组。我设法通过在 php:
unpack()
获得了相同的结果
$decodedKey = unpack('c*', $decodedKey); // ByteArray
所以最后我为此使用了 open ssl。
$publicKey = env('BASE_64_ENCODED_PUBLIC_KEY');
$key = "-----BEGIN PUBLIC KEY-----\n" . chunk_split($publicKey, 64, "\n") . "-----END PUBLIC KEY-----";
$key = openssl_get_publickey($key);
if (false === $key) {
return ["Could not get public Key"];
}
$verify = openssl_verify($originalJson, base64_decode($signature), $key, "sha1WithRSAEncryption");
来源:android in app billing v3 with php
将 public 密钥转换为正确的格式很重要。每行必须有 64 个字符。