将谷歌验证签名代码(kotlin)转换为PHP(laravel)

我需要验证签名,这是谷歌开发人员Android api中的安全功能。他们有一个用kotlin编写的工作示例。


自动取款机。我正在尝试转换此代码:


val decodedKey = Base64.decode(encodedPublicKey, Base64.DEFAULT)

val keyFactory = KeyFactory.getInstance("RSA")

return keyFactory.generatePublic(X509EncodedKeySpec(decodedKey))

已修复。我从谷歌得到它。encodedPublicKey


我已安装,目前我尝试转换上述代码:phpseclib


$decodedKey = base64_decode($encodedPublicKey);

$x509 = new X509();

$x509->loadX509($encodedPublicKey);

$rsa = $x509->getPublicKey();

return [$rsa, $x509];

我发现这甚至不起作用。它不返回任何内容,而 kotlin 代码返回许多解码的密钥,例如:base64_decode($encodedPublicKey)Base64.decode(encodedPublicKey, Base64.DEFAULT)


D/IABUtil/Security: decodedKey 0 :48

编辑


kotlins 返回一个字节数组。我设法通过在php中使用来获得相同的结果:Base64.decode(encodedPublicKey, Base64.DEFAULT)unpack()


$decodedKey = unpack('c*', $decodedKey); // ByteArray


千巷猫影
浏览 121回答 1
1回答

aluckdog

所以最后我用了开放的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");将公钥转换为正确的格式非常重要。每行必须有 64 个字符。
打开App,查看更多内容
随时随地看视频慕课网APP