Google позволяет вам создать «защищенный токен» для reCAPTCHA, что означает, что вы можете использовать один и тот же ключ/секрет в нескольких доменах. Нет необходимости создавать ключи/секреты для каждого домена, за которым вы следите.
Вот их документы, как видите, в них нет понимания того, как зашифрован токен, кроме примера в Ява. Мой вопрос в том, как это будет написано в ColdFusion. Я взломал его в течение 4 часов, но просто не могу заставить его работать. Другие примеры, которые я рассмотрел:
Кто-нибудь из гуру шифрования ColdFusion знает, как это сделать?
ОБНОВЛЕНИЕ
Спасибо, Ли, думаю, мы продвинулись дальше, но все еще видим «недействительный стокен». Вот что у меня есть:
json_token = '{"session_id":"#createUUID()#","ts_ms":#dateDiff("s", dateConvert("utc2Local", "January 1 1970 00:00"), now())#}';
secret_key_hash = hash(secret_key,"SHA", "UTF-8");
secret_key_binary = binaryDecode(secret_key_hash, "hex");
secret_key_aes = arraySlice(secret_key_binary,1,16);
secret_key_base64 = binaryEncode( javacast("byte[]", secret_key_aes), "base64");
secure_token = Encrypt(json_token,secret_key_base64,"AES/ECB/PKCS5Padding",'base64');
Мы используем ColdFusion 9 на Java 1.7, метод arraySlice недоступен или базовый java .subList(). Итак, мы используем пользовательскую функцию ArraySlice с сайта cflib.org.
Я также видел комментарии к реализации PHP о закодированном URL-адресе, поэтому я также пробовал это в конце, безрезультатно:
secure_token = Replace(secure_token,"=","","ALL");
secure_token = Replace(secure_token,"+","-","ALL");
secure_token = Replace(secure_token,"/","_","ALL");