使用discuz的加密函數authcode來防刷票_PHP教程

來源:互聯網
上載者:User
最近做了一個投票,需要做防刷票措施。但是刷票很難防止,畢竟手段也多。為了最大程度上阻止刷票行為,就用了這麼一個方法。

首先在前台頁面定義一個字串'www.bkjia.com',然後使用discuz的 authcode 函數,產生一串密文。這串密文每次都不一樣,比如會產生

  • 10884NwIMCg5nDZ24rarNv+nBpsWut6ReT1grxHH4oKSdvgPmXJ0z2jEuePCe
  • a8b4XU3yBHEec48KirVf0N3VAXKIQHm1qvwvpCYUu6ywwQJLR0ErlI1zwfG7tQ

但是在後台經過解碼,回複的明文最後都會變回'www.bkjia.com',利用這點,我們可以在伺服器端判斷,若返回的密文解碼後不是那個字串,則無法投票。

discuz的 authcode 函數可以說對中國的PHP界作出了重大貢獻。包括康盛自己的產品,以及大部分中國使用PHP的公司都用這個函數進行加密,authcode 是使用異或運算進行加密和解密。

原理如下,假如:

加密

  • 明文:1010 1001
  • 密匙:1110 0011
  • 密文:0100 1010

得出密文0100 1010,解密之需和密匙異或下就可以了

解密

  • 密文:0100 1010
  • 密匙:1110 0011
  • 明文:1010 1001

並沒有什麼高深的演算法,密匙重要性很高,所以,關鍵在於怎麼產生密匙。那我們一起看下康盛的authcode怎麼做的吧:

 0 驗證資料有效性        // substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16) 驗證資料完整性        // 驗證資料有效性,請看未加密明文的格式        if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {            return substr($result, 26);        } else {            return '';        }    } else {        // 把動態密匙儲存在密文裡,這也是為什麼同樣的明文,生產不同密文後能解密的原因        // 因為加密後的密文可能是一些特殊字元,複製過程可能會丟失,所以用base64編碼        return $keyc.str_replace('=', '', base64_encode($result));    }}// 加密echo authcode("www.bkjia.com", 'ENCODE');// 解密echo authcode(authcode("www.bkjia.com", 'ENCODE'));//echo authcode("55e5OxJ5zjgFuqTjFRPdt9ag+fC+GKP9Efq6yWeAAvdQFq+D");?>

http://www.bkjia.com/PHPjc/752395.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/752395.htmlTechArticle最近做了一個投票,需要做防刷票措施。但是刷票很難防止,畢竟手段也多。為了最大程度上阻止刷票行為,就用了這麼一個方法。 首先在...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.