Приложение падает не знаю в чем причина

07-19 14:12:05.065 6930-6930/com.example.myapplication D/AndroidRuntime: Shutting down VM
        
        
        --------- beginning of crash
    07-19 14:12:05.070 6930-6930/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.example.myapplication, PID: 6930
        java.lang.IllegalStateException: Could not execute method for android:onClick
            at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
            at android.view.View.performClick(View.java:4756)
            at android.view.View$PerformClick.run(View.java:19749)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
         Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
            at android.view.View.performClick(View.java:4756) 
            at android.view.View$PerformClick.run(View.java:19749) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5221) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
         Caused by: org.jasypt.exceptions.EncryptionInitializationException: java.security.NoSuchAlgorithmException: SecretKeyFactory PBEWithMD5AndTripleDES implementation not found
            at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.initialize(StandardPBEByteEncryptor.java:716)
            at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.initialize(StandardPBEStringEncryptor.java:553)
            at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.encrypt(StandardPBEStringEncryptor.java:631)
            at org.jasypt.util.text.StrongTextEncryptor.encrypt(StrongTextEncryptor.java:107)
            at com.example.myapplication.MainActivity.one(MainActivity.java:34)
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) 
            at android.view.View.performClick(View.java:4756) 
            at android.view.View$PerformClick.run(View.java:19749) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5221) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
         Caused by: java.security.NoSuchAlgorithmException: SecretKeyFactory PBEWithMD5AndTripleDES implementation not found
            at org.apache.harmony.security.fortress.Engine.notFound(Engine.java:190)
            at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:139)
            at javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:108)
            at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.initialize(StandardPBEByteEncryptor.java:703)
            at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.initialize(StandardPBEStringEncryptor.java:553) 
            at org.jasypt.encryption.pbe.StandardPBEStringEncryptor.encrypt(StandardPBEStringEncryptor.java:631) 
            at org.jasypt.util.text.StrongTextEncryptor.encrypt(StrongTextEncryptor.java:107) 
            at com.example.myapplication.MainActivity.one(MainActivity.java:34) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) 
            at android.view.View.performClick(View.java:4756) 
            at android.view.View$PerformClick.run(View.java:19749) 
            at android.os.Handler.handleCallback(Handler.java:739) 
            at android.os.Handler.dispatchMessage(Handler.java:95) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5221) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

//

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
    
        <EditText
            android:id="@+id/editText1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="РАСШИФРОВАНО"
            android:inputType="textPersonName"
            android:text="" />
    
        <EditText
            android:id="@+id/editText2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="ЗАШИФРОВАНО"
            android:inputType="textPersonName"
            android:text="" />
    
    
        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="one"
            android:text="START" />
    
    </LinearLayout>

//

implementation group: 'org.jasypt', name: 'jasypt', version: '1.9.2'

//

package com.example.myapplication;

import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

import androidx.appcompat.app.AppCompatActivity;

import org.jasypt.util.text.StrongTextEncryptor;


public class MainActivity extends AppCompatActivity {




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }


public void one (View view){

    StrongTextEncryptor textEncryptor = new StrongTextEncryptor();
    String myEncryptionPassword = "q1w2";
    textEncryptor.setPassword(myEncryptionPassword);

    EditText el1 = (EditText) findViewById(R.id.editText1);
    String decrypted = el1.getText().toString();

    String myEncryptedText = textEncryptor.encrypt(decrypted);

    String plainText = textEncryptor.decrypt(myEncryptedText);

    EditText el2 = (EditText) findViewById(R.id.editText2);
    el2.setText(plainText);


}

}

Ответы (1 шт):

Автор решения: blind.falcon

Чтобы понять причину падения всегда обращайте внимание на надпись Caused by: в тексте лога. Самая нижняя надпись Caused by: java.security.NoSuchAlgorithmException: SecretKeyFactory PBEWithMD5AndTripleDES implementation not found означает алгоритм шифрования PBEWithMD5AndTripleDES не поддерживается. Об этом же написано выше Caused by: org.jasypt.exceptions.EncryptionInitializationException: java.security.NoSuchAlgorithmException: SecretKeyFactory PBEWithMD5AndTripleDES implementation not found

Дело в том, что эта библиотека в своей работе использует класс андроида SecretKeyFactory, у него нет в списке поддерживаемых алгоритмов PBEWithMD5AndTripleDES. В том месте, где вы задаёте алгоритм шифрования/дешифрования, укажите один из поддерживаемых SecretKeyFactory алгоритмов, согласно документации - https://developer.android.com/reference/javax/crypto/SecretKeyFactory

→ Ссылка