Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 14 дек 2018, 18:46

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Кодирование строки
СообщениеДобавлено: 20 авг 2014, 20:30 

Зарегистрирован: 27 июн 2014, 12:11
Сообщений: 41
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
Здравствуйте, подскажите пожалуйста как вообще на java можно кодировать/декодировать строки? Как я понимаю самый простой вариант это использовать xor, но как потом из переменной типа byte получить это числовое значение переменной, ведь нужно чтобы все символы были читабельны, а это проще всего-цифры. И как потом байту присвоить эти числовые значения именно как байтовое значение, а не чтобы он принял эти цифры за строку и переводил строку цифр в байты... В общем немного не разберусь я сам. Не бросайте в беде собрата-программиста :D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Кодирование строки
СообщениеДобавлено: 21 авг 2014, 12:16 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
Не совсем понимаю, что вам нужно. Массив байт в строку закодировать или наоборот? Или может быть шифровать?

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Кодирование строки
СообщениеДобавлено: 21 авг 2014, 12:31 

Зарегистрирован: 27 июн 2014, 12:11
Сообщений: 41
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
KamiSempai писал(а):
Не совсем понимаю, что вам нужно. Массив байт в строку закодировать или наоборот? Или может быть шифровать?

Именно, шифровать! Строку в другую строку.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Кодирование строки
СообщениеДобавлено: 21 авг 2014, 15:28 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
Как вариан, можно использовать Cipher.

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         private static final String CRYPT_TRANSFORMATION = "AES/ECB/PKCS5Padding";
  2.         private static final String CRYPT_ALGORITHM = "AES";
  3.         private static final String CRYPT_KEY_ALGORITHM = "PBKDF2WithHmacSHA1";
  4.         private static final byte[] CRYPT_KEY_SALT = "Длиннная строка со случайным набором символов.".getBytes();
  5.         private static final int CRYPT_KEY_ITERATIONS = 1000;
  6.  
  7.         public String encrypt(String string, String key) {
  8.                 byte[] byteArray = null;
  9.                 try {
  10.                         byteArray = cryptByteArray(string.getBytes(), key, Cipher.ENCRYPT_MODE);
  11.                 } catch (Exception e) {
  12.                         e.printStackTrace();
  13.                         // Не получилось зашифровать строку. Если сделать все правильно, ошибка возникать не должна.
  14.                         return null;
  15.                 }
  16.                 return new String(android.util.Base64.encode(byteArray, 0));
  17.         }
  18.        
  19.         public String decrypt(String string, String key) {
  20.                 byte[] inputByteArray = android.util.Base64.decode(string.getBytes(), 0);
  21.                 byte[] byteArray = null;
  22.                 try {
  23.                         byteArray = cryptByteArray(inputByteArray, key, Cipher.DECRYPT_MODE);
  24.                 } catch (Exception e) {
  25.                         e.printStackTrace();
  26.                         // Не удалось расшифровать строку. Вероятно, не правильно указан key.
  27.                 }
  28.                 if(byteArray != null)
  29.                         return new String(byteArray);
  30.                 return null;
  31.         }
  32.        
  33.         public byte[] cryptByteArray(byte[] byteArray, String key, int cryptMode) throws Exception {
  34.                 byte[] result = null;
  35.                 SecretKeyFactory factory;
  36.                 factory = SecretKeyFactory
  37.                                 .getInstance(CRYPT_KEY_ALGORITHM);
  38.                 SecretKey tmp = factory.generateSecret(new PBEKeySpec(key
  39.                                 .toCharArray(), CRYPT_KEY_SALT, CRYPT_KEY_ITERATIONS, 128));
  40.                 SecretKeySpec keySpec = new SecretKeySpec(tmp.getEncoded(), CRYPT_ALGORITHM);
  41.                 Cipher сipher = Cipher.getInstance(CRYPT_TRANSFORMATION);
  42.                 сipher.init(cryptMode, keySpec);
  43.                 result = сipher.doFinal(byteArray);
  44.                 return result;
  45.         }

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Кодирование строки
СообщениеДобавлено: 21 авг 2014, 19:51 

Зарегистрирован: 27 июн 2014, 12:11
Сообщений: 41
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
KamiSempai писал(а):
Как вариан, можно использовать Cipher.

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         private static final String CRYPT_TRANSFORMATION = "AES/ECB/PKCS5Padding";
  2.         private static final String CRYPT_ALGORITHM = "AES";
  3.         private static final String CRYPT_KEY_ALGORITHM = "PBKDF2WithHmacSHA1";
  4.         private static final byte[] CRYPT_KEY_SALT = "Длиннная строка со случайным набором символов.".getBytes();
  5.         private static final int CRYPT_KEY_ITERATIONS = 1000;
  6.  
  7.         public String encrypt(String string, String key) {
  8.                 byte[] byteArray = null;
  9.                 try {
  10.                         byteArray = cryptByteArray(string.getBytes(), key, Cipher.ENCRYPT_MODE);
  11.                 } catch (Exception e) {
  12.                         e.printStackTrace();
  13.                         // Не получилось зашифровать строку. Если сделать все правильно, ошибка возникать не должна.
  14.                         return null;
  15.                 }
  16.                 return new String(android.util.Base64.encode(byteArray, 0));
  17.         }
  18.        
  19.         public String decrypt(String string, String key) {
  20.                 byte[] inputByteArray = android.util.Base64.decode(string.getBytes(), 0);
  21.                 byte[] byteArray = null;
  22.                 try {
  23.                         byteArray = cryptByteArray(inputByteArray, key, Cipher.DECRYPT_MODE);
  24.                 } catch (Exception e) {
  25.                         e.printStackTrace();
  26.                         // Не удалось расшифровать строку. Вероятно, не правильно указан key.
  27.                 }
  28.                 if(byteArray != null)
  29.                         return new String(byteArray);
  30.                 return null;
  31.         }
  32.        
  33.         public byte[] cryptByteArray(byte[] byteArray, String key, int cryptMode) throws Exception {
  34.                 byte[] result = null;
  35.                 SecretKeyFactory factory;
  36.                 factory = SecretKeyFactory
  37.                                 .getInstance(CRYPT_KEY_ALGORITHM);
  38.                 SecretKey tmp = factory.generateSecret(new PBEKeySpec(key
  39.                                 .toCharArray(), CRYPT_KEY_SALT, CRYPT_KEY_ITERATIONS, 128));
  40.                 SecretKeySpec keySpec = new SecretKeySpec(tmp.getEncoded(), CRYPT_ALGORITHM);
  41.                 Cipher сipher = Cipher.getInstance(CRYPT_TRANSFORMATION);
  42.                 сipher.init(cryptMode, keySpec);
  43.                 result = сipher.doFinal(byteArray);
  44.                 return result;
  45.         }

Спасибо, попробую :D


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB