Intereting Posts
Исключение Null Pointer в отладочном ответе Библиотека Пикассо – вне памяти Как получить доступ к значению edittext внутри фрагмента, который находится в viewpager Google maps URL-схема для поиска нескольких мест с использованием координат Значение dalvik VM VFY коды Виджет управления питанием, отображаемый на короткое время при обновлении моего собственного виджета через AppWidgetManager, в чем проблема? Android Studio – JAVA_HOME не указывает на действительную установку JVM Как программно включить флэш-память камеры в Android? Андроид округлый угол текста с идеальным раунд в углу Java не распознает идентификатор элементов Android Android Сбросить стек без onresume, который называется Android Microsoft Office Library (.doc, .docx, .xls, .ppt и т. Д.) Экран всплывающего окна приложения Worklight на Android Создание кругового и прозрачного графического XML-Android Запуск Eclipse висит, «Android SDK: устранение маркеров ошибок»

Шифрование и дешифрование xml

Я делаю приложение, в котором я должен зашифровать xml с моей стороны и отправить его на сервер, и в ответ я получу xml, и я должен его расшифровать. Я не собираюсь зашифровывать и расшифровывать. Мой код выглядит следующим образом

<?xml version='1.0' encoding='utf-8'?><adm_auth_req><user_name>user.s7</user_name><password>gspcsmo</password></adm_auth_req> 

Я использую этот код для шифрования и расшифровки его

 public string encryptData(string key, string data) { int keyLen = key.Length; int dataLen = Convert.ToInt16(data.Length); char chData; char chKey; char[] data1 = data.ToCharArray(); char[] key1 = key.ToCharArray(); StringBuilder encryptedData = new StringBuilder(); for (int i = 0; i < dataLen; i++) { chData = data1[i]; for (int j = 0; j < keyLen; j++) { chKey = key1[j]; chData = (char)(chData ^ chKey); } encryptedData.Append(chData); } return (encryptedData.ToString()); } 

Но все равно все напрасно. Может ли кто-нибудь сказать мне, как зашифровать его и расшифровать результат?

Я использовал алгоритм DES для шифрования и дешифрования.

Для шифрования: здесь после шифрования я пишу файл для сохранения. Вы можете сохранить его с другим именем (temp) и отправить его на сервер. После успешной отправки вы можете удалить этот зашифрованный файл

  FileOutputStream fos = null ; CipherInputStream cis; byte key[] = "abcdEFGH".getBytes(); SecretKeySpec secretKey = new SecretKeySpec(key,"DES"); Cipher encrypt = Cipher.getInstance("DES/ECB/PKCS5Padding"); encrypt.init(Cipher.ENCRYPT_MODE, secretKey); InputStream fis = new ByteArrayInputStream(fileData);//Here I am getting file data as byte array. You can convert your file data to InputStream by other way too. File dataFile = new File(dataDir,fileName); //dataDir is location where my file is stored if(!dataFile.exists()){ cis = new CipherInputStream(fis,encrypt); try { fos = new FileOutputStream(dataFile); byte[] b = new byte[8]; int i; while ((i=cis.read(b)) != -1) { fos.write(b, 0, i); } return fileName; } finally{ try { if(fos != null) { fos.flush(); fos.close(); } cis.close(); fis.close(); } catch (IOException e) { //IOException } } } return ""; 

Для расшифровки:

  CipherInputStream cis; FileOutputStream fos = null; FileInputStream fis = null; File dataFile = new File(dataDir,fileName); // here I am getting encrypted file from server File newDataFile = new File(dataDir,fileName+"_TEMP"); // I am creating temporary decrypted file byte key[] = "abcdEFGH".getBytes(); SecretKeySpec secretKey = new SecretKeySpec(key,"DES"); Cipher decrypt = Cipher.getInstance("DES/ECB/PKCS5Padding"); decrypt.init(Cipher.DECRYPT_MODE, secretKey); try { fis = new FileInputStream(dataFile); } catch(Exception e) { //Exception } if(dataFile.exists()){ cis = new CipherInputStream(fis,decrypt); try { fos = new FileOutputStream(newDataFile); byte[] b = new byte[8]; int i; while ((i=cis.read(b)) != -1) { fos.write(b, 0, i); } return newDataFile; } finally{ try { if(fos != null) { fos.flush(); fos.close(); } cis.close(); fis.close(); } catch (IOException e) { //IOException } } } 

В чем проблема, которую вы решаете?

Может быть, SSL вам подходит? Шифрование из коробки, стандартное решение.

Также вы можете взглянуть на JCA . Но я думаю, это будет слишком тяжелое решение для вашей проблемы.

На мой взгляд, вы не должны пытаться внедрить пользовательский алгоритм в качестве первого, вы изобретаете колесо, и, во-вторых, он, вероятно, не будет рядом с безопасностью, как другие более стандартные процедуры шифрования. Если бы я был вами, я бы рассмотрел некоторые хорошие библиотеки шифрования Java. Один из них я нашел здесь, http://www.bouncycastle.org/latest_releases.html

На SO есть уже некоторые ответы, которые могли бы вам ответить.

Шифровать и расшифровать строку в java

Как шифровать String в Java

Почему вы не используете Twofish для этого, XML – это текст, и все, что вам нужно использовать, – это алгоритм, и вы можете найти много примеров для этого.