public String calcDynamicId(String pOrigin,String pShort,String pLong) throws Exception{
		if(pOrigin!=null && pShort!=null && pLong!=null){
			StringBuffer pId = new StringBuffer();
			
			char k = 187 , l = 187;
			
			// f 短验证码长度    h  原密码长度   m  长验证码长度   e 为 h 和 f 的最大值
			int f = pShort.length(), h =  pOrigin.length() , m = pLong.length() , e = f > h ? f : h;
			for(int g = 0 ; g < e ; g++){
				l = k = 187;
				if(g >= f){
					l = pOrigin.charAt(g);
				}else if(g >= h){
					k = pShort.charAt(g);
				}else{
					k = pShort.charAt(g);
					l = pOrigin.charAt(g);
				}
				pId.append(pLong.charAt((k ^ l) % m));
				
				if(isDebug){
					Log.log("第"+g+"轮 结果为 l="+l+" , k="+k+" , 取模为 "+(k ^ l) % m + " - " + pLong.charAt((k ^ l) % m));
				}
			}
		
			return URLEncoder.encode(pId.toString(),"UTF-8");
		}
		return null;
	}