Android — используйте RC4 с шифром

Итак, как мне это сделать? Нигде не могу найти ни одного примера, который бы успешно использовал RC4. Также делаем cipher = Cipher.getInstance("RC4"); возвращает исключение NoSuchAlgorithm


person josephus    schedule 10.02.2012    source источник
comment
Почему вы хотите использовать RC4? Очень легко злоупотребить   -  person CodesInChaos    schedule 10.02.2012
comment
Я хочу зашифровать/расшифровать видеофайлы, а AES не обрежет их, потому что он слишком медленный. Не беспокойтесь о том, что я неправильно использую RC4, об этом можно будет позаботиться после того, как я выясню, как его использовать. :)   -  person josephus    schedule 10.02.2012
comment
AES должен уметь расшифровывать видеофайлы далеко за пределы реального времени. Вероятно, вам нужен произвольный доступ, поэтому я бы рекомендовал использовать AES в режиме CTR.   -  person CodesInChaos    schedule 10.02.2012
comment
Если вам абсолютно необходимо иметь RC4, просто реализуйте его самостоятельно. Это всего несколько строк. В моей системе при использовании openssl speed rc4 примерно в 2,5 раза быстрее, чем aes-128.   -  person President James K. Polk    schedule 10.02.2012


Ответы (1)


Если вы перечислите доступные шифры:

    Provider[] providers = Security.getProviders();
    for (Provider provider : providers) {
        for (Object entry : provider.keySet()) {
            String name = String.valueOf(entry);
            if (name.startsWith("Cipher")) {
                Log.d("Cipher", "Supports: " + name.substring(7));
            }
        }
    }

Есть несколько вариантов RC4, например PBEWITSHAAND128BITRC4 (PKCS#5). Какой из них вам нужен?

person Jens    schedule 10.02.2012
comment
Этот список отличается для каждого типа устройства (или, по крайней мере, версии Android). Я использую 2.2, и просмотр моего списка не дает варианта rc4. С какого устройства этот список? - person josephus; 10.02.2012
comment
Это из ИКС. Если я перепрошью устройство обратно на 2.3.4, вы все равно найдете, например, PBEWITSHAAND128BITRC4. - person Jens; 10.02.2012
comment
Как говорится, у меня 2.2. Кроме того, еще одна цель — позволить приложению работать на младших телефонах — 2.2 и ниже. - person josephus; 10.02.2012
comment
В этом случае выполните рефакторинг (чтобы он не конфликтовал с тем, что находится на вашем устройстве) и включите в свой проект последнюю и самую лучшую банку с надувным замком и продолжайте оттуда. - person Jens; 10.02.2012
comment
Последний и лучший bouncycastle для Android — это spongycastle. - person President James K. Polk; 10.02.2012
comment
О, мило. Всегда приятно, когда кто-то уже исправил надоедливые моменты. github.com/rtyley/spongycastle - person Jens; 10.02.2012