Форум программистов, компьютерный форум CyberForum.ru

Ошибка дешифровки 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.widget.TextView; import org.jsoup.Jsoup; import org.jsoup.nodes.Document;
Android Не работает onClickListener для одной из девяти кнопок Появилась проблема: при нажатие одной из девяти кнопок (с одним обработчиком) не вызывается обработчик. Есть основное Activity: general_activity.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" ... http://www.cyberforum.ru/android-dev/thread1792711.html
Android Статический listener
Всем привет! Немного затупил. Есть некий ListView, в котором хранятся изображения. Изображения гружу при помощи Glide, в котором есть обработчик (listener). После загрузки я могу делать какие-то операции с изображением, допустим, уменьшать или делать кружочек, неважно. Т.е. по окончании загрузки каждого изображения должен выполниться listener: .listener(new RequestListener<String,...
Обработать событие 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  [ТС]     Ошибка дешифровки AES в Android: pad block corrupted
Дело в том , что, Андроид использует другие провайдеры шифрования, в отличии от 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;
}
}
 
Текущее время: 03:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru