//---------------------------passport注册或登陆整合开始----------------------------- string memberInfo = "username=" + postUsername + "&password=" + md5(postPwd) + "&time="+ time()//获取当前时间与格林威治的秒差 + "&email="+"abc@abc.com";//需要email的值,实际整合通常情况是从数据库里获取用户email dzAuth = passport_encrypt(memberInfo , dzPassportKey); dzForward = forward.Value.ToString().Trim();//获取返回地址 if(dzForward=="") dzForward = webUrl;//如果返回地址为空,则返回设置的页 dzVerify = md5("login" + dzAuth + dzForward + dzPassportKey); dzAuth = Server.UrlEncode(dzAuth); dzForward = Server.UrlEncode(dzForward); Response.Redirect(dzUrl + "api/passport.php?action=login&auth=" + dzAuth + "&forward=" + dzForward + "&verify=" + dzVerify); //---------------------------passport注册或登陆整合结束----------------------------- }else Response.Write("登陆失败<br>"); }
//------------------------------------以下为一些关键函数------------------------------ // 将字符串转换为byte数组 public byte[] strToByteAry(string str){ return Encoding.Default.GetBytes(str); }
// c# dz通信证编码函数 public string passport_encrypt(string txt, string key){ byte[] randomNumber = new byte[1]; RNGCryptoServiceProvider Gen = new RNGCryptoServiceProvider(); Gen.GetBytes(randomNumber); int rand = Convert.ToInt32(randomNumber[0]); string encrypt_key = md5(rand.ToString());
byte[] txtAry = strToByteAry(txt); byte[] encryAry = strToByteAry(encrypt_key); int j = 0; int ctr = 0; byte[] tmp = new byte[2 * txtAry.Length]; for (int i = 0; i < txtAry.Length; i++) { ctr = ctr == encryAry.Length ? 0 : ctr; tmp[j++] = encryAry[ctr]; tmp[j++] = xor(txtAry[i], encryAry[ctr++]); } return Convert.ToBase64String(passport_key(tmp, key)); }
// c# dz通行证解码函数 public string passport_decrypt(string txt, string key){ byte[] t = Convert.FromBase64String(txt); byte[] btxt = passport_key(t, key); byte[] btmp = new byte[btxt.Length]; int j = 0; for (int i = 0; i < btxt.Length; i++, j++) btmp[j] = xor(btxt[i], btxt[++i]); return Encoding.Default.GetString(btmp); }
(编辑:焦作站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|