Шифроване и дешифриране
Тази публикация в блога изброява стъпките за интегриране на инструкциите на Intel AES-NI в приложение за Android с помощта на библиотеката OpenSSL. Следвайки инструкциите, дадени тук, можете да създадете JNI приложение, използвайки ускорение AES-NI.
Нови инструкции за шифроване AES (Intel AES-NI)
Използване на Intel AES-NI в Android
Алгоритмите AES в библиотеката OpenSSL демонстрираха значително по-висока производителност в сравнение с местните алгоритми на Java. Причината е, че тази библиотека е оптимизирана за процесори Intel и използва инструкции AES-NI. По-долу е описано стъпка по стъпка за криптиране на файл с помощта на доставчика на OpenSSL.
Започвайки с Android 4.3, OpenSSL поддържа Intel AES-NI в AOSP, така че просто трябва да компилирате кода с желаната конфигурация. Като алтернатива можете да го изтеглите от официалния уебсайт и да го компилирате сами, след което да използвате файла * .a/*. Така че файлът е директно във вашия проект. Има два начина за получаване на библиотеки за криптиране.
Ако нямате изходния код на AOSP, можете да изтеглите OpenSSL тук. Използвайте най-новата версия, за да избегнете всички известни уязвимости, открити в по-ранните версии на OpenSSL. AOSP включва интегрирана библиотека openssl, която може да бъде поставена в папката jni на приложението за достъп до съставните папки.
Ако изтегляте изходния код на openssl, за да компилирате и изградите сами библиотеката, използвайте следното.
1. Изтеглете изходния код:
2. Компилиране: изпълнете следната команда в конзолата (имайте предвид, че трябва да зададете променливата NDK на пълния път към вашата дистрибуция):
След това файлът libcrypto.a ще се появи в папката от най-високо ниво. За да използвате файла * .so, въведете Конфигуриране на споделен android-x86 ***.
С изходния код на AOSP веригата инструменти ndk не е необходима.
С това libcrypto.a се компилира и поставя в директорията out/host/linux_x86/bin.
Използвайте OpenSSL чрез NDK в Android Project
Създайте проект за Android, за да шифровате файлове в любимата си среда за разработка. Ето пример от Eclipse.
- Декларирайте функциите, свързани с OpenSSL, като естествена функция във файла Android.mk.
- Създайте папка jni в оригиналния си проект за Android.
- Създайте предварително компилирани папки за включване в папката jni.
- Включете папката на библиотеката OpenSSL, създадена в папката jni.
- След това внедрете криптиране, като напишете функция C в jni/*. C. След това трябва да копирате * .a/*. Така файловете и заглавния файл в проекта.
- Изтеглете библиотеката и внедряването на C в папката jni, във функция от класа Android, създаден в стъпка 1 като системна библиотека.