Updated Code: public NodeList getRoutingDoc(){ URL url; NodeList nl = null;
try{ String xmlFeed = context.getString(R.string.xml_feed) + IMEI + ".xml"; try { url = new URL(xmlFeed); URLConnection urlConnection; urlConnection = url.openConnection(); HttpURLConnection httpConnection = (HttpURLConnection) urlConnection; int responseCode = httpConnection.getResponseCode(); if(responseCode == HttpURLConnection.HTTP_OK){ String bytes = toHex("XXXX"); Key skeySpec = new SecretKeySpec(toByte(bytes), "AES"); InputStream in = httpConnection.getInputStream(); System.out.println(toByte(bytes)); Cipher c = Cipher.getInstance("AES/CFB8/NoPadding"); c.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec(toByte(bytes))); CipherInputStream cis = new CipherInputStream(in, c); cis.read(new byte[16]); BufferedReader br = new BufferedReader(new InputStreamReader(cis)); System.out.println("Got message"); System.out.println(br.readLine()); DocumentBuilderFactory dbf; dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document dom = db.parse(in); //cis.close(); Element docEle = dom.getDocumentElement(); nl = docEle.getElementsByTagName(TAG_CHAR); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (InvalidKeyException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvalidAlgorithmParameterException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchPaddingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } finally{ } return nl; } I have updated my code to the latest version I have. I am now using the CipherInputStream properly I think and getting the file in but the System.out.println gives me the following output: INFO/System.out(7880): � =k�K V� a ��_|F��(# -ï¿½Ñ ï¿½ �u ���n�| �� ~��� �9�< Ã�|T��sU Wlj�9�qeo� M%�t�V�V�3Q" � T�Yq?��E��� �H%f o���M�un��-���ȓ������<d��{���{�! �[&��%��M �.�jq+��,�b����� ��~����)��*ܨ )��> ��i���b�_"��F)�`"� So it looks as if its no decrypting it at all or not decrypting it properly?? Can anyone see what I am doing wrong? On Fri, Sep 24, 2010 at 10:44 AM, draf...@gmail.com <draf...@gmail.com>wrote: > 0 down vote favorite > > > I am trying to to download and decrypt an encrypted XML file. > > I have implemented the download part and have tested with an > unencrypted file and it works fine. > > However I now need to be able to download an XML file that has been > encrypted using AES and the key "XXXX" > > So I am only concerned with decryption as the encryption on the XML > file is already done. > > Here is my code so far: > > public NodeList getXMLDoc(){ > URL url; > NodeList nl = null; > > try{ > String xmlFeed = context.getString(R.string.xml_feed); > try { > url = new URL(xmlFeed); > URLConnection urlConnection; > urlConnection = url.openConnection(); > HttpURLConnection httpConnection = (HttpURLConnection) > urlConnection; > int responseCode = httpConnection.getResponseCode(); > > if(responseCode == HttpURLConnection.HTTP_OK){ > > String bytes = toHex("XXXX"); > SecretKeySpec skeySpec = new > SecretKeySpec(toByte(bytes), "AES"); > try { > c.init(Cipher.DECRYPT_MODE, skeySpec); > //c.doFinal(); > } catch (InvalidKeyException e) { > e.printStackTrace(); > } > InputStream in = httpConnection.getInputStream(); > CipherInputStream cis = new CipherInputStream(in, > c); > DocumentBuilderFactory dbf; > dbf = DocumentBuilderFactory.newInstance(); > DocumentBuilder db = dbf.newDocumentBuilder(); > > Document dom = db.parse(cis); > > Element docEle = dom.getDocumentElement(); > > nl = docEle.getElementsByTagName(TAG_CHAR); > > } > } > catch (MalformedURLException e) { > > e.printStackTrace(); > } > catch (IOException e) { > > e.printStackTrace(); > } catch (ParserConfigurationException e) { > > e.printStackTrace(); > } catch (SAXException e) { > > e.printStackTrace(); > } > } > finally{ > > } > return nl; > } > > At the minute I am trying to decrypt the whole file using > CipherInputStream is this the correct approach? > > My code above gives me the following exception: > > WARN/System.err(5274): java.io.IOException: last block incomplete in > decryption > > Is this a setup error or what might be causing this error? > > Are there any tutorials on how to decrypt an XML file in Android/Java? > > Am I going in the right direction as to how to decrypt the file or is > my code completely wrong? > -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en