thearhar Опубликовано 10 Января 2018 Жалоба Поделиться Опубликовано 10 Января 2018 Пытаюсь сделать приложение на андроид - обмен зашифрованными сообщениями с помощью ассимитричного ГОСТа, использую следующий код для шифрования: byte[] bmessage = message.getBytes(); InputStream crtstream = ctx.getAssets().open("user.crt"); int size = crtstream.available(); byte[] buffer = new byte[size]; crtstream.read(buffer); crtstream.close(); CertificateFactory factory = CertificateFactory.getInstance("X509"); Certificate certificate = factory.generateCertificate(new ByteArrayInputStream(buffer)); ByteArrayOutputStream cryptData = new ByteArrayOutputStream(); CMSEnvelopedDataOutputStreamR streamEncrypt = new CMSEnvelopedDataOutputStreamR(cryptData); streamEncrypt.init("GOST28147-89"); streamEncrypt.addRecipient((X509Certificate) certificate); streamEncrypt.write(bmessage, 0, bmessage.length); streamEncrypt.close(); return cryptData.toString(); message - String перед этим Получаю следующий exception java.lang.ClassNotFoundException: Unable to find class:ru.infotecs.cms.output.CMSEnvelopedDataOutputStream at ru.infotecs.crypto.proxy.Proxy.getClass(Proxy.java:240) at ru.infotecs.crypto.proxy.Proxy.<init>(Proxy.java:68) at ru.infotecs.cms.output.CMSEnvelopedDataOutputStreamR.<init>(CMSEnvelopedDataOutputStreamR.java:28) at me.sign.signme.Crypto.EncryptPKCS(Crypto.java:198) at me.sign.signme.MainActivity.testCrypto(MainActivity.java:50) at me.sign.signme.MainActivity.onCreate(MainActivity.java:73) at android.app.Activity.performCreate(Activity.java:6876) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3207) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3350) at android.app.ActivityThread.access$1100(ActivityThread.java:222) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1795) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7229) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:134) я так понимаю, библиотека, предоставленная на https://infotecs.ru/downloads/all/vipnet-jcrypto-sdk.html не полная? в проект я подключил jcrypto-jca-android-2.6.1-R363770 и jcrypto-pkcs7-android-2.6.1-R363770 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
thearhar Опубликовано 10 Января 2018 Автор Жалоба Поделиться Опубликовано 10 Января 2018 подключаю следующим образом: allprojects { repositories { jcenter() google() flatDir { dirs 'libs' } } } implementation 'ru.infotecs:jcrypto-jca-android-2.6.1-R363770@aar' implementation 'ru.infotecs:jcrypto-pkcs7-android-2.6.1-R363770@aar' файлы библиотек лежат в app/libs импорт средствами студии (и в результате compile project(':jcrypto-pkcs7-android-2.6.1-R363770') ) дают тот же результат Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Petrenko Sergey Опубликовано 11 Января 2018 Жалоба Поделиться Опубликовано 11 Января 2018 Чтобы решить проблему, необходимо в коде Android-приложения в методе onCreate сделать вызов DexLoader.load(context, “jcrypto-pkcs7.jar”); Из приведенного фрагмента кода не вполне ясно, где именно сделать этот вызов. Скорее всего здесь: me.sign.signme.MainActivity.onCreate. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
thearhar Опубликовано 14 Января 2018 Автор Жалоба Поделиться Опубликовано 14 Января 2018 Помогло добавление двух строчек: DexLoader.load(this, "jcrypto-jca.jar"); DexLoader.load(this, "jcrypto-pkcs7.jar"); Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.