public static string readEPCLabel(string strEPC, out ulong uEPCNumber)
 {
     try
     {
         string EPClabel     = RFIDTagInfo.HEXToASCII(strEPC.Substring(0, 6).ToUpper());
         string serialNumber = strEPC.Substring(7).Replace(" ", "");
         uEPCNumber = ulong.Parse(serialNumber);
         string EPSnumber = uEPCNumber.ToString("D20");
         return(EPClabel + EPSnumber);;
     }
     catch (Exception exp)
     {
         Trace.WriteLine("Get Exception " + exp.Message);
         uEPCNumber = 0;
         return("");
     }
 }
        public string DecryptFromHEX(string inputPart1, string inputPart2)
        {
            // Create AesManaged
            if (aes.Key == null || inputPart2 == "")
            {//can't covert 0x00 to ASCII word
                return("");
            }

            for (int j = 0; j < inputPart2.Length / 6; j++)
            {
                int pos = inputPart2.LastIndexOf("00");
                if (pos != -1)
                {
                    inputPart2 = inputPart2.Remove(pos - 3);
                }
                else
                {
                    break;
                }
            }

            for (int i = 0; i < 2; i++)
            {
                string hex2Ascii = "";
                string plaintext = "";
                try
                {
                    switch (decState)
                    {
                    case decryptedState.CombinedMemory:
                    {
                        hex2Ascii = RFIDTagInfo.HEXToASCII(
                            inputPart1 + inputPart2);

                        if (!IsBase64String(hex2Ascii))
                        {
                            //Trace.WriteLine("Format not support1 " + hex2Ascii);
                            decState = decryptedState.SingleMemroy;
                            continue;
                        }
                    }
                    break;

                    case decryptedState.SingleMemroy:
                    {
                        hex2Ascii = RFIDTagInfo.HEXToASCII(inputPart2);
                        if (!IsBase64String(hex2Ascii))
                        {
                            //Trace.WriteLine("Format not support2 " + inputPart2);
                            decState = decryptedState.CombinedMemory;
                            return("");
                        }
                    }
                    break;
                    }


                    //Trace.WriteLine("Read encrypted message " + hex2Ascii +
                    //                  ", decState = " + decState.ToString());
                    byte[] cipherText = System.Convert.FromBase64String(hex2Ascii);
                    plaintext = DecryptData(cipherText);

                    if (plaintext != "")
                    {
                        decState = decryptedState.CombinedMemory;
                        return(plaintext);
                    }
                }
                catch (Exception exp)  {   }
                switch (decState)
                {
                case decryptedState.CombinedMemory:
                    decState = decryptedState.SingleMemroy;
                    break;

                case decryptedState.SingleMemroy:
                    decState = decryptedState.CombinedMemory;
                    return("");
                }
            }
            return("");
        }