Intereting Posts
Android: скрыть ActionBar, сохранить вкладки Отправка намерения BroadcastReceiver из adb Заголовок RecyclerView под элементами в Android Исключение при фокусировке EditText в PopupWindow, запущенном на устройстве Отправить текст для конкретного контакта (whatsapp) Как сделать элемент в виде списка без кликов в Android Можно ли выполнять команды adb через приложение для Android? Как предотвратить изменение пользователем даты / времени (в Android)? Есть ли лучший способ обновить WebView? Установка Android sdk. Ошибка: был найден недопустимый контент, начиная с элемента 'd: skin'. На данный момент не ожидается никакого дочернего элемента Разрешения Android M: путают использование функции shouldShowRequestPermissionRationale () В чем смысл этого в Eclipse: «Путь к проекту должен иметь только один сегмент». Пример просмотра webview shouldinterceptrequest Android: отображение пунктов меню панели действий в зависимости от ViewPager Проверка доступности / доступности хоста на Android

Шифр с режимом ECB не должен использоваться

Я пытаюсь использовать Cipher с парой ключей RSA вместе с "AndroidKeyStore" . Во всей документации для Android, которую я могу найти, на примерах показаны Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding") или Cipher.getInstance("RSA/ECB/PKCS1Padding") . Оба из них вызывают одно и то же предупреждение в Android Studio:

Шифрование ECB не должно использоваться

Cipher # getInstance не следует вызывать с ECB в качестве режима шифрования или без установки режима шифрования, потому что режим по умолчанию для android является ECB, что является небезопасным.

Очевидно, я не могу опустить это или установить режим « None , потому что по умолчанию используется ECB. Если режим ECB небезопасен, какой режим я должен использовать?

Если я использую какой-либо другой режим (я знаю), я получаю NoSuchAlgorithmException: No provider found for RSA/{mode}/OAEPWithSHA-256AndMGF1Padding . Может быть проблема с заполнением?

В любом случае, согласно документации Android KeyStore System , режим ECB, по-видимому, является единственным режимом блока шифрования, который он поддерживает при использовании RSA.

Solutions Collecting From Web of "Шифр с режимом ECB не должен использоваться"

Это выглядит как ошибка в Android Lint, используемая Android Studio для поиска проблем. Цель этого предупреждения – предупредить об использовании режима блока ECB с симметричными шифрами, такими как AES. Тем не менее, нет никакого смысла предупреждать об этом для RSA, потому что RSA / ECB / … Cipher принимает / обрабатывает только один блок ввода.

Я предлагаю вам сообщить об ошибке на https://code.google.com/p/android/ в отношении Android Lint.

Мне нравится это объяснение ( от Maarten Bodewes ):

"RSA/ECB/PKCS1Padding" фактически не реализует шифрование в режиме ECB. Его следует было назвать "RSA/None/PKCS1Padding" поскольку его можно использовать только для шифрования одного блока открытого текста (или, действительно, секретного ключа). Это просто ошибка названия Sun / Oracle.

Если ваша версия Android включает BouncyCastle, вы можете использовать None вместо ECB .

Изменив «AES / ECB / PKCS5PADDING» на «AES / CBC / PKCS5PADDING», эта защита безопасности меня предупреждает.