2017-02-17 2 views
0

Как я знаю, использую ли я Bouncy Castle из jar или тот, который был реализован в Android? Я загрузил с https://www.bouncycastle.org/latest_releases.html и добавил jar в мой проект Android Studio. Как я могу проверить, использую ли я его (тот, который я загрузил)?Как я знаю, использую ли я Bouncy Castle из jar или тот, который реализован в Android?

+0

Вы можете попробовать использовать SpongyCastle вместо – EpicPandaForce

+0

@EpicPandaForce Потому что ... заполните пожалуйста. –

ответ

1

По крайней мере, последние несколько версий Android закрепил имена конфликта путем переименования классов BouncyCastle они используют для com.android. **. Я не совсем уверен, когда это произошло, но, глядя на репозиторий исходного кода на https://android.googlesource.com/platform/external/bouncycastle/+refs, предлагается внести изменения, начиная с Ice Cream Sandwich - API уровня 14.

Я не уверен, что они сделали, основанные на поставщиках, например Cipher.getInstance("AES/GCM/PKCS5PADDING", "BC"). Однако каждый метод getInstance() в JCE также имеет версию, в которой вы можете явно указать класс Provider, например. Cipher.getInstance("AES/GCM/PKCS5PADDING", new org.bouncycastle.jce.provider.BouncyCastleProvider()), который устраняет любую двусмысленность.

1

SpongyCastle является официальной репакцией BouncyCastle для Android. Вы должны использовать этот пакет https://rtyley.github.io/spongycastle/

Почему?

Платформа Android, к сожалению, поставляется с вырезанной версией Bouncy Castle, а также с искалеченными возможностями, а также затрудняет установку обновленной версии библиотек из-за конфликтов классов.

губчатые Замок акции Надувной замок библиотеки с парой небольших изменений, чтобы заставить его работать на Android:.

  • все имена пакетов были перемещены из org.bouncycastle * в org.spongycastle *.

  • , чтобы избежать конфликтов загрузчик классов имя API поставщика Java Security теперь не SC, а не до н.э.

  • нет имен классов меняются, поэтому класс BouncyCastleProvider остается Bouncy, а не рыхлым, но движется к т пакет org.spongycastle.jce.provider.

+0

Последние версии Android переименовали классы bouncycastle, которые Android использует для чего-то вроде com.android.org.bouncycastle. *, Так что это уже не проблема, по крайней мере для этих версий. –

+0

@JamesKPolk вы можете рассказать, как недавно? –

+0

@JamesKPolk Глядя на источники, по крайней мере, API 17 использует упомянутую вами «реорганизованную» версию. Я считаю, что ваш комментарий тоже может быть ответом. –

Смежные вопросы