reCAPTCHA中的公钥和私钥有什么用途?

7

在将reCAPTCHA应用到网站之前,需要提供公钥和私钥。此外,还需要根据网站获取reCAPTCHA密钥。这样做的原因是什么呢?公钥和私钥是否会影响reCAPTCHA显示的单词?我知道可以将公钥和私钥设置为全局,以便在其他域中使用,但是为什么一开始就需要这些密钥呢?


另外,我一直在致力于在MVC 3项目中实现reCaptcha,在客户端,该控件将答案的值发送到reCaptcha服务器,然后当我的表单数据到达服务器端时,我使用一个私钥而不是其他内容来调用reCaptcha服务器以验证请求。我想知道如果两个人同时提交该表单,它如何知道哪个请求发送了哪个答案? - Four_0h_Three
1个回答

5

好的,这是我的猜测,但不保证完全正确。

  1. 在生成客户端页面时需要使用您的公钥。
  2. 客户端使用此公钥向reCAPTCHA请求图片、相应的正确答案和可能的ID。当然,答案和ID都是加密的,使用公钥进行加密。(因此客户端无法知道答案)
  3. 用户输入答案并将其发送到您的服务器。
  4. 您有一个使用公钥加密的{id, answer}。您向reCAPTCHA服务器发送您的私钥和此加密消息。
  5. reCAPTCHA解密消息,揭示答案和ID,并检查它们是否匹配。
  6. 它告诉您的服务器检查结果。

注意:

  1. 如果用户向reCAPTCHA发送自己的公钥,则检查将不会成功,因为您的私钥与他的公钥不匹配。
  2. 该方案证明了您的服务器确实接收到了reCAPTCHA的答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接