最近做了一个投票,需要做防刷票措施。但是刷票很难防止,毕竟手段也多。为了最大程度上阻止刷票行为,就用了这么一个方法。
首先在前台页面定义一个字符串'www.bkjia.com',然后使用discuz的 authcode 函数,生成一串密文。这串密文每次都不一样,比如会生成
10884nwimcg5ndz24rarnv+nbpswut6ret1grxhh4oksdvgpmxj0z2jeuepcea8b4xu3ybheec48kirvf0n3vaxkiqhm1qvwvpcyuu6ywwqjlr0erli1zwfg7tq但是在后台经过解码,回复的明文最后都会变回'www.bkjia.com',利用这点,我们可以在服务器端判断,若返回的密文解码后不是那个字符串,则无法投票。
discuz的 authcode 函数可以说对中国的php界作出了重大贡献。包括康盛自己的产品,以及大部分中国使用php的公司都用这个函数进行加密,authcode 是使用异或运算进行加密和解密。
原理如下,假如:
加密
明文:1010 1001密匙:1110 0011密文:0100 1010得出密文0100 1010,解密之需和密匙异或下就可以了
解密
密文:0100 1010密匙:1110 0011明文:1010 1001并没有什么高深的算法,密匙重要性很高,所以,关键在于怎么生成密匙。那我们一起看下康盛的authcode怎么做的吧:
http://www.bkjia.com/phpjc/752395.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/752395.htmltecharticle最近做了一个投票,需要做防刷票措施。但是刷票很难防止,毕竟手段也多。为了最大程度上阻止刷票行为,就用了这么一个方法。 首先在...