Ich versuche, ein sicheres Zeichen für ReCaptcha V2 zu erzeugen, wie hier beschrieben: https://developers.google.com/recaptcha/docs/secure_tokenWie generiere ich ein Google ReCaptcha V2 Secure Token mit PHP?
Leider hat mein erzeugt stoken nicht gültig ist, und ich kann nicht einen Weg finden, um zu überprüfen, warum es nicht funktioniert . Es gibt ein funktionierendes Java-Beispiel (STokenUtils.java), , aber ich kann es nicht in PHP übersetzen.
public static function generateSecurityToken($secretKey){
$stoken = array(
'session_id' => session_id(),
'ts_ms' => round(microtime(true)*1000)
);
$secretKey = self::pkcs5_pad(hash('sha1', $secretKey), 16);
$stoken_json = json_encode($stoken);
$stoken_crypt = self::encrypt(self::pkcs5_pad($stoken_json, 16), $secretKey);
return $stoken_crypt;
}
public static function encrypt($sStr, $sKey) {
return base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
base64_decode($sKey),
$sStr,
MCRYPT_MODE_ECB
)
);
}
public static function pkcs5_pad ($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
Kann jemand ein funktionierendes PHP-Beispiel zur Verfügung stellen oder auf offensichtliche Fehler in meinem Code hinweisen?
ich über die Verwendung der ECB-Modus äußern würde, aber [es stellt sich heraus, dass Google die Implementierung tut dies auch] (https://github.com/google/recaptcha- Java/Ausgaben/1). Seufzer. –
@alingex Wenn Sie eine funktionierende Lösung erhalten, können Sie den PHP-Code posten? Vielen Dank, weil Sie eine gute Frage gestellt haben! –
@mikey_w siehe meine Antwort [# 31684672] (http:// Stackoverflow.com/a/31684672/3991313) unten für eine Drop-in-Lösung – slushie