Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.72
nalysnyk
0 / 0 / 0
Регистрация: 30.04.2010
Сообщений: 1
#1

AES для Android - Программирование Android

03.05.2010, 12:44. Просмотров 2468. Ответов 1
Метки нет (Все метки)

Всем привет! Я столкнулся с проблемой написания программы шифрования стандарту AES для мобильной платформы Android.

Подскажыте какие нюансы нужно при этом учесть и какие проблемы могут возникнуть? Возможно кто то сталкивался с такой задачей и знает как можно усовершенствовать этот алгоритм для быстрой обработки больших объемов данных?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2010, 12:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос AES для Android (Программирование Android):

Ошибка дешифровки AES в Android: pad block corrupted
Приветствую. В обучающих целях написал на Java программу для хранения паролей,...

Выбор мощного android смартфона до 10 рублей, для тестирования проектов Android Studio, что посоветуете?
Какую фирму посоветуете?

Можно ли написать веб сервер на Java для клиента на Android, имея под рукой только телефон на Android?
Уважаемые гуру программирования, если можно, пожалуйста, напишите поподробнее-...

Нужно разработать приложение для бар-клуба. Для ios, android
Добрый день!!! Кто может помочь или посоветовать программиста. Главное...

Какие горячие клавиши используются для Find Usages в Android Studio для мака
Как настроить на маке Find usages в scope Projects and libraries в Android...

Выбор книги или статей для создания приложений под Android (клиент для сервера)
С какой книги посоветуете начать изучение (желательно сразу на 4 версии). ...

1
Mecid
680 / 229 / 16
Регистрация: 15.10.2007
Сообщений: 1,247
03.05.2010, 17:16 #2
Не встречался с данной задачей,но нашел небольшой кусок кода
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
 
/**
 * Usage:
 * <pre>
 * String crypto = SimpleCrypto.encrypt(masterpassword, cleartext)
 * ...
 * String cleartext = SimpleCrypto.decrypt(masterpassword, crypto)
 * </pre>
 * @author ferenc.hechler
 */
public class SimpleCrypto {
 
    public static String encrypt(String seed, String cleartext) throws Exception {
        byte[] rawKey = getRawKey(seed.getBytes());
        byte[] result = encrypt(rawKey, cleartext.getBytes());
        return toHex(result);
    }
    
    public static String decrypt(String seed, String encrypted) throws Exception {
        byte[] rawKey = getRawKey(seed.getBytes());
        byte[] enc = toByte(encrypted);
        byte[] result = decrypt(rawKey, enc);
        return new String(result);
    }
 
    private static byte[] getRawKey(byte[] seed) throws Exception {
        KeyGenerator kgen = KeyGenerator.getInstance("AES");
        SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
        sr.setSeed(seed);
        kgen.init(128, sr); // 192 and 256 bits may not be available
        SecretKey skey = kgen.generateKey();
        byte[] raw = skey.getEncoded();
        return raw;
    }
 
    
    private static byte[] encrypt(byte[] raw, byte[] clear) throws Exception {
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
        byte[] encrypted = cipher.doFinal(clear);
        return encrypted;
    }
 
    private static byte[] decrypt(byte[] raw, byte[] encrypted) throws Exception {
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.DECRYPT_MODE, skeySpec);
        byte[] decrypted = cipher.doFinal(encrypted);
        return decrypted;
    }
 
    public static String toHex(String txt) {
        return toHex(txt.getBytes());
    }
    public static String fromHex(String hex) {
        return new String(toByte(hex));
    }
    
    public static byte[] toByte(String hexString) {
        int len = hexString.length()/2;
        byte[] result = new byte[len];
        for (int i = 0; i < len; i++)
            result[i] = Integer.valueOf(hexString.substring(2*i, 2*i+2), 16).byteValue();
        return result;
    }
 
    public static String toHex(byte[] buf) {
        if (buf == null)
            return "";
        StringBuffer result = new StringBuffer(2*buf.length);
        for (int i = 0; i < buf.length; i++) {
            appendHex(result, buf[i]);
        }
        return result.toString();
    }
    private final static String HEX = "0123456789ABCDEF";
    private static void appendHex(StringBuffer sb, byte b) {
        sb.append(HEX.charAt((b>>4)&0x0f)).append(HEX.charAt(b&0x0f));
    }
    
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.05.2010, 17:16
Привет! Вот еще темы с решениями:

Qt для Android
подскажите можно ли на Qt писать для андройда?если нет,то почему?? ведь это...

Lockscreen для android
Нужно сделать экран блокировки для android в среде delphi. В гугле мало чего...

Сниффер для android
Есть ли какой-нибудь сниффер для android?

Таймер для Android
есть функция которую необходимо вызывать через каждые 60 сек, пока приложение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru