Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/2/17 7:13:19 PHP Token(令牌)设计_[PHP教程]
PHP Token(令牌)设计
设计目标:
这里所说的token是在页面显示的时候,写到FORM的一个隐藏表单项(type=hidden).token不可明文,如果是明文,那就太危险了,所以要采用一定的加密方式.密文要可逆.俺算法很白痴,所以采用了网上一个现成的方法.
如何达到目的:
我以前写的GToken不能达到上面所说的第二条,今天修改了一下,把功能2加上了.个人感觉还行.
请大家看代码,感觉哪里有不合理的地方,还请赐教!谢谢.
加密我是找的网上的一个方法,稍作了一下修改.
GEncrypt.inc.php:
class GEncrypt extends GSuperclass {protected static function keyED(txt,encrypt_key){ encrypt_key = md5(encrypt_key); ctr=0; tmp = ""; for (i=0;iif (ctr==strlen(encrypt_key)) ctr=0; tmp.= substr(txt,i,1) ^ substr(encrypt_key,ctr,1); ctr++; } return tmp; }public static function encrypt(txt,key){ //encrypt_key = md5(rand(0,32000));encrypt_key = md5(((float) date("YmdHis") + rand(10000000000000000,99999999999999999)).rand(100000,999999));ctr=0; tmp = ""; for (i=0;iif (ctr==strlen(encrypt_key)) ctr=0; tmp.= substr(encrypt_key,ctr,1) . (substr(txt,i,1) ^ substr(encrypt_key,ctr,1)); ctr++; } return base64_encode(self::keyED(tmp,key));}public static function decrypt(txt,key){txt = self::keyED( base64_decode(txt),key); tmp = "";for (i=0;imd5 = substr(txt,i,1); i++; tmp.= (substr(txt,i,1) ^ md5); }return tmp;} }?> 赞 If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长) QQ:154298438 QQ:417480759
赞