Форум программистов, компьютерный форум, киберфорум
Наши страницы

Ошибка дешифровки AES в Android: pad block corrupted - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Повторение операции в фоне http://www.cyberforum.ru/android-dev/thread1792875.html
Разобрался с парсингом package com.example.nikolay.vmagaz; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import...
Программирование Android Не работает onClickListener для одной из девяти кнопок Появилась проблема: при нажатие одной из девяти кнопок (с одним обработчиком) не вызывается обработчик. Есть основное Activity: general_activity.xml <?xml version="1.0" encoding="utf-8"?>... http://www.cyberforum.ru/android-dev/thread1792711.html
Программирование Android Статический listener
Всем привет! Немного затупил. Есть некий ListView, в котором хранятся изображения. Изображения гружу при помощи Glide, в котором есть обработчик (listener). После загрузки я могу делать какие-то...
Обработать событие onBackPressed во фрагменте Программирование Android
У меня есть фрагмент который запускается через транзакцию и как можно обработать в нем нажатие кнопки back и выполнить определенные действия?
Программирование Android Не отображается Google map http://www.cyberforum.ru/android-dev/thread1792638.html
Добрый день. Сразу скажу, перерыл весь форум, но это не помогло. Я начинаю только разбираться в Android Studio, поэтому сильно не пинайте. Мануалы то же читал, то же не помогает. Ситуация такая: если...
Программирование Android Сложить 2 цвета и установить цвет статус бар Есть цвет #f78536 и на него накладывается тень #1a000000. Какой будет результирующий цвет? Как это можно узнать? И как потом программно установить этот результирующий цвет в статус бар? подробнее

Показать сообщение отдельно
Dimarzio
5 / 0 / 0
Регистрация: 12.08.2016
Сообщений: 3
13.09.2016, 20:21  [ТС]
Дело в том , что, Андроид использует другие провайдеры шифрования, в отличии от Windows, и в данном фрагменте:
Java
1
2
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
            sr.setSeed(data.getBytes());
генерируется каждый раз новый ключ.
Для решения проблемы нужно выбирать другой алгоритм генерации ключа.
Вот один из вариантов, который я нашел:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static byte[]encrypt(String key, byte[] data, String iv) {
        final byte[]keyBytes=key.getBytes();
        final byte[] ivBytes=iv.getBytes();
        
 
        try {
            byte[] result;
            SecretKeySpec sks=new SecretKeySpec(keyBytes,"AES");
            Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
            c.init(Cipher.ENCRYPT_MODE, sks, new IvParameterSpec(ivBytes));
            result=c.doFinal(data);
            return result;
 
        }
        catch (Exception e){
            System.out.println("Ошибка шифрования! - "+ e);
        }
    return null;
    }
Теперь мой класс выглядит так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class AES {
    
    public static byte[]encrypt(String key, byte[] data, String iv) {
        final byte[]keyBytes=key.getBytes();
        final byte[] ivBytes=iv.getBytes();
        
 
        try {
            byte[] result;
            SecretKeySpec sks=new SecretKeySpec(keyBytes,"AES");
            Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
            c.init(Cipher.ENCRYPT_MODE, sks, new IvParameterSpec(ivBytes));
            result=c.doFinal(data);
            return result;
 
        }
        catch (Exception e){
            System.out.println("Ошибка шифрования! - "+ e);
        }
    return null;
    }
public static byte[] decrypt (String key, byte[]data, String iv) {
  byte[] result;
  final byte[]keyBytes=key.getBytes();
  final byte[]ivBytes=iv.getBytes();
  
    try {
      SecretKeySpec sks=new SecretKeySpec(keyBytes, "AES");
        Cipher c=Cipher.getInstance("AES/CBC/PKCS5Padding");
      c.init(Cipher.DECRYPT_MODE,sks, new IvParameterSpec(ivBytes));
        result=c.doFinal(data);
        return result;
  }
catch (Exception e) {
System.out.println("Ошибка дешифровки! - "+e);
}
return null;
}
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru