public synchronized byte[] macEncry(String str){
	 byte[] raw=str.getBytes();
	 byte[] result=new byte[8];
	 byte[] eightgroup=this.fillEightByte(raw);
	 byte[] temp=new byte[8];
	 int amount=eightgroup.length/8;
	 //the first des 
	 for(int j=0;j<8;j++){
		 temp[j]=eightgroup[j];
	 }
	 result=this.getEncCode(temp);
	 for(int i=1;i<amount;i++){
		 byte[] next=new byte[8];
		 for(int j=0;j<8;j++){
			 next[j]=eightgroup[i*8+j];
		 }
		BigInteger resultBig=new BigInteger(result);
		BigInteger nextBig=new BigInteger(next);
		next=resultBig.xor(nextBig).toByteArray();
		if(next.length!=8)
			next=this.fillEightByte(next);
		result=this.getEncCode(next);
	 }
	 return result;
  }