Google позволяет вам создать «защищенный токен» для reCAPTCHA, что означает, что вы можете использовать один и тот же ключ/секрет для нескольких доменов. Не нужно создавать ключ/секреты для каждого домена, за которым вы смотрите.Создание защищенного маркера Google reCAPTCHA в ColdFusion
Вот их документы, поскольку вы можете видеть, что у него нет понимания того, как токен зашифрован, кроме an example in Java. Мой вопрос в том, как это будет написано в ColdFusion. У меня была трещина в течение 4 часов, но я просто не могу заставить ее работать. Другие примеры я рассмотрел:
любой ColdFusion шифровального гуру там знают, как это сделать?
UPDATE
Благодаря Leigh, думаю, мы дальше, но по-прежнему видим 'недействительных stoken'. Вот что у меня есть:
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 UDF cflib.org.
Я также видел комментарии на PHP реализацию о кодировке URL, так что я также пробовал это в конце, никакого эффекта:
secure_token = Replace(secure_token,"=","","ALL");
secure_token = Replace(secure_token,"+","-","ALL");
secure_token = Replace(secure_token,"/","_","ALL");
Хотя это интересный вопрос, учитывая сферу действия - он, скорее всего, будет закрыт как «слишком широкий». Можете ли вы показать нам, что вы пробовали, и конкретно, с какой частью у вас возникли трудности с переводом или с проблемами? – Leigh
Перечитав свой вопрос, вы просто спрашиваете, как это делается? Потому что это гораздо более узкий вопрос. Короче говоря, это просто стандартная AES с небольшой манипуляцией с ключом шифрования. См. [Мой ответ] (http://stackoverflow.com/a/33931276/104223). Хотя в будущем, пожалуйста, укажите код, который вы пробовали в вопросе. Это помогло бы прояснить проблему (и, вероятно, избегать ее закрытия как «слишком широкого»). – Leigh