Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 10

Вылетает программа для шифрования

15.05.2017, 14:21. Показов 596. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
мне нужно было написать не большую программу шифратор. я выбрал язык программирования Java и шифрование XOR
У меня получился вот такой код
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.test.encryptor2;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
public class encode extends Activity {
 
    Button btnStart;
 
    EditText key;
    EditText text;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_encode);
 
        btnStart = (Button) findViewById(R.id.btnStart);
        key = (EditText) findViewById(R.id.key);
        text = (EditText) findViewById(R.id.text);
 
        btnStart.setOnClickListener(ocl);
    }
 
    View.OnClickListener ocl = new View.OnClickListener() {
 
        @Override
        public void onClick(View v) {
 
            String Snum1 = text.toString();
            String Snum2 = key.toString();
 
            char[] num1 = Snum1.toCharArray();
            char[] num2 = Snum2.toCharArray();
 
            switch (v.getId()) {
                case R.id.btnStart:
                    String important = enCode(num1, num2);
                    text.setText(important);
            }
        }
    };
 
 
    public static String enCode(char[] num1, char[] num2) {
 
        byte[] bText = new byte[num1.length << 1];
 
        for (int i = 0; i < num1.length; i++) {
            int bpos = i << 1;
            bText[bpos] = (byte) ((num1[i] & 0xFF00) >> 8);
            bText[bpos + 1] = (byte) (num1[i] & 0x00FF);
        }
 
        byte[] bKey = new byte[num2.length << 1];
 
        for (int i=0; i < num2.length; i++){
            int bpos = i << 1;
            bKey[bpos] = (byte) ((num2[i]&0xFF00) >> 8);
            bKey[bpos + i] = (byte) (num2[i]&0x00FF);
        }
 
        int longText = bText.length;
        int longKey = bKey.length;
 
        for (int i = 0; i < longText; i++) {
            bText[i] = (byte) (bText[i] ^ bKey[i % longKey]);
        }
 
        char[] cText = new char[bText.length >> 1];
        for (int i=0; i < cText.length; i++){
            int bpos=i << i;
            char c = (char) (((bText[bpos]& 0xFF00)<<8)+ (bText[bpos+1]&0x00FF ));
            cText[i] = c;
        }
 
        return new String(cText);
    }
}

изначально программа имела другой вид и сразу переводила string в byte методом .getBytes, такая программа почти работала
но на выходе я получал строку типа [b@xxxxxxx и я не мог её расшифровать. мне показалось что я смогу решить проблему если буду переводить массив char[] в массив byte[] и я немного изменил код.
теперь программа запускается. но при нажатии кнопки вылетает.
код по преобразованию char[] в byte[] и обратно был нагло сплогиачен от сюдаhttps://habrahabr.ru/post/108076/
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2017, 14:21
Ответы с готовыми решениями:

При запуске новой деятельности вылетает с ошибкой (программа легкая для тех, кто программирует под android)
Здравствуйте! Начал недавно изучать программирование под android, реализовал пять деятельностей в программе, при переходе от заставки к...

вылетает программа
решил попробовать написать под андроид, в приложение вылетает ошибка и приложение завершается public class DataAdapter extends...

Программа запускается но вылетает
не могу записать текст из EditText в int переменную. программа запускается но вылетает. как правильно написать методы gettext() и parseInt()

13
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
15.05.2017, 14:26
HNKTO, при вылете все порядочные программы пишут причину. в лог пишут. если в него заглянуть можно найти ошибку. если понять его не получается его нужно прикрепить к теме на форуме.
1
91 / 86 / 12
Регистрация: 08.08.2013
Сообщений: 667
15.05.2017, 14:28
Цитата Сообщение от HNKTO Посмотреть сообщение
я получал строку типа [b@xxxxxxx и
Чтото мне подсказывает что это был АДРЕС в памяти где всё это хранится, а ни сами данные, возможно поэтому свернули с пути.
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 10
15.05.2017, 14:30  [ТС]
прошу прощения за мою не грамотность, но могу я просмотреть лог, если мне не удаётся запустить программу на компьютере, и мне приходится использовать реальное устройство?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
15.05.2017, 14:37
активити в манифесте прописана?
лучше сюда весь манифест сразу выложить
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 10
15.05.2017, 14:38  [ТС]
вот лог при вылете, я его не понял
Кликните здесь для просмотра всего текста

CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
05-15 14:35:18.021 22960-22960/com.test.encriptor2 V/SettingsInterface:  from settings cache , name = ***** , value = null
05-15 14:35:18.021 22960-22960/com.test.encriptor2 V/SettingsInterface:  from settings cache , name = ***** , value = null
05-15 14:35:18.021 22960-22960/com.test.encriptor2 V/AudioManager: playSoundEffect   effectType: 0
05-15 14:35:18.021 22960-22960/com.test.encriptor2 V/AudioManager: querySoundEffectsEnabled...
05-15 14:35:18.023 22960-22960/com.test.encriptor2 D/AndroidRuntime: Shutting down VM
05-15 14:35:18.023 22960-22960/com.test.encriptor2 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                     Process: com.test.encriptor2, PID: 22960
                                                                     java.lang.ArrayIndexOutOfBoundsException: length=166; index=168
                                                                         at com.test.encryptor2.encode.enCode(encode.java:63)
                                                                         at com.test.encryptor2.encode$1.onClick(encode.java:41)
                                                                         at android.view.View.performClick(View.java:4858)
                                                                         at android.view.View$PerformClick.run(View.java:20329)
                                                                         at android.os.Handler.handleCallback(Handler.java:815)
                                                                         at android.os.Handler.dispatchMessage(Handler.java:104)
                                                                         at android.os.Looper.loop(Looper.java:194)
                                                                         at android.app.ActivityThread.main(ActivityThread.java:5929)
                                                                         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:987)
                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)
05-15 14:35:18.060 22960-22960/com.test.encriptor2 I/Process: Sending signal. PID: 22960 SIG: 9
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
15.05.2017, 14:40
вместо
Java
1
String Snum1 = text.toString();
надо бы писать
Java
1
String Snum1 = text.getText().toString();
ну и тот же принцип для второго поля ввода
1
Модератор
 Аватар для vxg
3407 / 2178 / 354
Регистрация: 13.01.2012
Сообщений: 8,448
15.05.2017, 14:40
HNKTO, выход за пределы массива
1
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 10
15.05.2017, 15:16  [ТС]
лишних активити я не создавал вот манифест
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.encryptor2">
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="encryptor2"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".encode">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
</manifest>


Добавлено через 35 минут
всё ещё не могу решить проблему
мне кажется что проблема где то здесь
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
char[] cText = new char[bText.length >> 1];
        for (int i=0; i < cText.length; i++){
            int bpos=i << i;
            char c = (char) (((bText[bpos]& 0xFF00)<<8)+ (bText[bpos+1]&0x00FF ));
            cText[i] = c;
        }
 
        return new String(cText);
    }

нашёл не большую особенность у программы она корректно работает если в полях не больше двух знаков.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
15.05.2017, 15:21
тут читал внимательно?
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 10
15.05.2017, 15:25  [ТС]
исправил всё так как ты сказал, ничего не изменилось
0
314 / 257 / 81
Регистрация: 31.10.2016
Сообщений: 619
15.05.2017, 17:05
HNKTO, мне ваши танцы с char непонятны (у String есть метод getBytes), как и попытка написать свой велосипед. все это решается одной операцией.
Java
1
2
3
4
5
6
7
8
9
10
11
public static byte[] encode(String pText, String pKey) {
        byte[] txt = pText.getBytes();
        byte[] key = pKey.getBytes();
        byte[] res = new byte[pText.length()];
 
        for (int i = 0; i < txt.length; i++) {
            res[i] = (byte) (txt[i] ^ key[i % key.length]);
        }
 
        return res;
    }
Источник мудрости
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 10
15.05.2017, 20:32  [ТС]
текст что написан выше я видел много раз, к тому же изначально моя программа имела похожий вид, об этом я писал в начале темы, на выходе мы получаем массив бит, и у меня не получилось преобразовать его в текст. также я слышал что этот метод не работает с кириллицей.
В данный момент я пытаюсь написать собственные логи вот для наглядности код с логами и исправлением не больших ошибок
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
package com.test.encryptor2;
 
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
 
public class encode extends Activity {
 
    private static final String TAG = "myLogs";
 
    Button btnStart;
 
    EditText key;
    EditText text;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_encode);
 
        btnStart = (Button) findViewById(R.id.btnStart);
        key = (EditText) findViewById(R.id.key);
        text = (EditText) findViewById(R.id.text);
 
        btnStart.setOnClickListener(ocl);
    }
 
    View.OnClickListener ocl = new View.OnClickListener() {
 
        @Override
        public void onClick(View v) {
 
            String Snum1 = text.getText().toString();
            String Snum2 = key.getText().toString();
 
            char[] num1 = Snum1.toCharArray();
            Log.d(TAG, "преобразуем текст string " +Snum1+ " в char" +num1);
            char[] num2 = Snum2.toCharArray();
            Log.d(TAG, "преобразуем ключ string " +Snum2+ " в char" +num2);
 
            switch (v.getId()) {
                case R.id.btnStart:
                    Log.d(TAG, "нажатие на кнопку");
                    String important = enCode(num1, num2);
                    text.setText(important);
                    Log.d(TAG, "полученная строка " + important);
            }
        }
    };
 
 
    public static String enCode(char[] num1, char[] num2) {
 
        byte[] bText = new byte[num1.length << 1];
 
        Log.d(TAG, "создаём массив bText "  + bText);
        Log.d(TAG, "размер массива bText " + bText.length);
        Log.d(TAG, "создание цикла преобразования bText");
 
        for (int i = 0; i < num1.length; i++) {
            int bpos = i << 1;
            bText[bpos] = (byte) ((num1[i] & 0xFF00) >> 8);
            bText[bpos + 1] = (byte) (num1[i] & 0x00FF);
 
            Log.d(TAG,"количество циклов bText " +num1.length );
            Log.d(TAG, "i ="  + i);
            Log.d(TAG, "bpos ="  + bpos);
            Log.d(TAG, "bText[bpos]= " +bText[bpos]);
            Log.d(TAG, "bText[bpos+1]= " +bText[bpos+1]);
 
        }
            Log.d(TAG, "bText[]=" + bText);
 
        byte[] bKey = new byte[num2.length << 1];
 
        Log.d(TAG, "создаём массив bKey "  + bKey);
        Log.d(TAG, "размер массива bKey " + bKey.length);
        Log.d(TAG, "создание цикла преобразования bKey");
 
        for (int i=0; i < num2.length; i++){
            int bpos = i << 1;
            bKey[bpos] = (byte) ((num2[i]&0xFF00) >> 8);
            bKey[bpos + i] = (byte) (num2[i]&0x00FF);
 
            Log.d(TAG,"количество циклов bKey " +num2.length );
            Log.d(TAG, "i ="  + i);
            Log.d(TAG, "bpos ="  + bpos);
            Log.d(TAG, "bKey[bpos]= " +bKey[bpos]);
            Log.d(TAG, "bKey[bpos+1]= " +bKey[bpos+1]);
        }
 
        Log.d(TAG, "bKey[]=" + bKey);
        Log.d(TAG, "начало шифрования");
        Log.d(TAG, "создание цикла");
 
        for (int i = 0; i < bText.length; i++) {
            bText[i] = (byte) (bText[i] ^ bKey[i % bKey.length]);
 
            Log.d(TAG, "количество циклов" +bText.length);
            Log.d(TAG, " bText" + "[" + i + "]" + "=" +  bText[i]);
        }
            Log.d(TAG, "bText[]="+ bText);
            Log.d(TAG, "создание массива символов cText");
 
        char[] cText = new char[bText.length >> 1];
 
        Log.d(TAG, "длина массива "+ cText.length);
        Log.d(TAG, "создание цикла");
 
        for (int i=0; i < cText.length; i++){
            Log.d(TAG, "колличество циклов "+ cText.length);
            Log.d(TAG, "i="+ i);
            int bpos=i << i;
            Log.d(TAG, "bpos="+ bpos);
            char c = (char) (((bText[bpos]& 0x00FF)<<8)+ (bText[bpos+1]&0x00FF ));
            cText[i] = c;
            Log.d(TAG, "символ на выходе"+ c);
        }
 
        return new String(cText);
    }
}

вот лог, если в полях не больше двух символов программа прекрасно работает
Кликните здесь для просмотра всего текста
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
05-15 20:13:06.805 15811-15811/com.test.encriptor2 D/myLogs: преобразуем текст string ке в char[C@269a9a77
05-15 20:13:06.805 15811-15811/com.test.encriptor2 D/myLogs: преобразуем ключ string 12 в char[C@39ee36e4
05-15 20:13:06.805 15811-15811/com.test.encriptor2 D/myLogs: нажатие на кнопку
05-15 20:13:06.805 15811-15811/com.test.encriptor2 D/myLogs: создаём массив bText [B@177f074d
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: размер массива bText 4
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: создание цикла преобразования bText
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: количество циклов bText 2
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: i =0
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: bpos =0
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: bText[bpos]= 4
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: bText[bpos+1]= 58
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: количество циклов bText 2
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: i =1
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: bpos =2
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: bText[bpos]= 4
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: bText[bpos+1]= 53
05-15 20:13:06.806 15811-15811/com.test.encriptor2 D/myLogs: bText[]=[B@177f074d
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: создаём массив bKey [B@27ddc202
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: размер массива bKey 4
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: создание цикла преобразования bKey
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: количество циклов bKey 2
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: i =0
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: bpos =0
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: bKey[bpos]= 49
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: bKey[bpos+1]= 0
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: количество циклов bKey 2
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: i =1
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: bpos =2
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: bKey[bpos]= 0
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: bKey[bpos+1]= 50
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: bKey[]=[B@27ddc202
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: начало шифрования
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: создание цикла
05-15 20:13:06.807 15811-15811/com.test.encriptor2 D/myLogs: количество циклов4
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs:  bText[0]=53
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs: количество циклов4
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs:  bText[1]=58
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs: количество циклов4
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs:  bText[2]=4
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs: количество циклов4
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs:  bText[3]=7
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs: bText[]=[B@177f074d
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs: создание массива символов cText
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs: длина массива 2
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs: создание цикла
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs: колличество циклов 2
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs: i=0
05-15 20:13:06.808 15811-15811/com.test.encriptor2 D/myLogs: bpos=0
05-15 20:13:06.809 15811-15811/com.test.encriptor2 D/myLogs: символ на выходе㔺
05-15 20:13:06.809 15811-15811/com.test.encriptor2 D/myLogs: колличество циклов 2
05-15 20:13:06.809 15811-15811/com.test.encriptor2 D/myLogs: i=1
05-15 20:13:06.809 15811-15811/com.test.encriptor2 D/myLogs: bpos=2
05-15 20:13:06.809 15811-15811/com.test.encriptor2 D/myLogs: символ на выходеЇ
05-15 20:13:06.817 15811-15811/com.test.encriptor2 D/myLogs: полученная строка 㔺Ї

так выглядит мой лог при вылете программы (ключ и текст 3 символа)
Кликните здесь для просмотра всего текста
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
05-15 20:27:14.061 24040-24040/com.test.encriptor2 D/myLogs: преобразуем текст string кек в char[C@2540d476
05-15 20:27:14.062 24040-24040/com.test.encriptor2 D/myLogs: преобразуем ключ string 123 в char[C@269a9a77
05-15 20:27:14.062 24040-24040/com.test.encriptor2 D/myLogs: нажатие на кнопку
05-15 20:27:14.062 24040-24040/com.test.encriptor2 D/myLogs: создаём массив bText [B@39ee36e4
05-15 20:27:14.062 24040-24040/com.test.encriptor2 D/myLogs: размер массива bText 6
05-15 20:27:14.062 24040-24040/com.test.encriptor2 D/myLogs: создание цикла преобразования bText
05-15 20:27:14.062 24040-24040/com.test.encriptor2 D/myLogs: количество циклов bText 3
05-15 20:27:14.062 24040-24040/com.test.encriptor2 D/myLogs: i =0
05-15 20:27:14.062 24040-24040/com.test.encriptor2 D/myLogs: bpos =0
05-15 20:27:14.062 24040-24040/com.test.encriptor2 D/myLogs: bText[bpos]= 4
05-15 20:27:14.062 24040-24040/com.test.encriptor2 D/myLogs: bText[bpos+1]= 58
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: количество циклов bText 3
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: i =1
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: bpos =2
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: bText[bpos]= 4
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: bText[bpos+1]= 53
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: количество циклов bText 3
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: i =2
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: bpos =4
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: bText[bpos]= 4
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: bText[bpos+1]= 58
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: bText[]=[B@39ee36e4
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: создаём массив bKey [B@177f074d
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: размер массива bKey 6
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: создание цикла преобразования bKey
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: количество циклов bKey 3
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: i =0
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: bpos =0
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: bKey[bpos]= 49
05-15 20:27:14.063 24040-24040/com.test.encriptor2 D/myLogs: bKey[bpos+1]= 0
05-15 20:27:14.064 24040-24040/com.test.encriptor2 D/myLogs: количество циклов bKey 3
05-15 20:27:14.064 24040-24040/com.test.encriptor2 D/myLogs: i =1
05-15 20:27:14.064 24040-24040/com.test.encriptor2 D/myLogs: bpos =2
05-15 20:27:14.064 24040-24040/com.test.encriptor2 D/myLogs: bKey[bpos]= 0
05-15 20:27:14.064 24040-24040/com.test.encriptor2 D/myLogs: bKey[bpos+1]= 50

в данный момент я не уверен смогу ли я просмотреть лог и всё исправить сам, так что вся надежда на вас
P.S. очевидно что собака зарыта в цикле bKey
0
0 / 0 / 0
Регистрация: 06.01.2017
Сообщений: 10
16.05.2017, 14:46  [ТС]
так оно и есть, если ввести ключ размером два символа то программа работает дальше но вылетает уже по другой причине вот лог
Кликните здесь для просмотра всего текста
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
05-15 20:33:47.078 24400-24400/com.test.encriptor2 D/myLogs: преобразуем текст string кек в char[C@39ee36e4
05-15 20:33:47.078 24400-24400/com.test.encriptor2 D/myLogs: преобразуем ключ string 12 в char[C@177f074d
05-15 20:33:47.078 24400-24400/com.test.encriptor2 D/myLogs: нажатие на кнопку
05-15 20:33:47.078 24400-24400/com.test.encriptor2 D/myLogs: создаём массив bText [B@27ddc202
05-15 20:33:47.078 24400-24400/com.test.encriptor2 D/myLogs: размер массива bText 6
05-15 20:33:47.078 24400-24400/com.test.encriptor2 D/myLogs: создание цикла преобразования bText
05-15 20:33:47.078 24400-24400/com.test.encriptor2 D/myLogs: количество циклов bText 3
05-15 20:33:47.078 24400-24400/com.test.encriptor2 D/myLogs: i =0
05-15 20:33:47.078 24400-24400/com.test.encriptor2 D/myLogs: bpos =0
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: bText[bpos]= 4
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: bText[bpos+1]= 58
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: количество циклов bText 3
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: i =1
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: bpos =2
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: bText[bpos]= 4
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: bText[bpos+1]= 53
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: количество циклов bText 3
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: i =2
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: bpos =4
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: bText[bpos]= 4
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: bText[bpos+1]= 58
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: bText[]=[B@27ddc202
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: создаём массив bKey [B@1a146713
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: размер массива bKey 4
05-15 20:33:47.079 24400-24400/com.test.encriptor2 D/myLogs: создание цикла преобразования bKey
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: количество циклов bKey 2
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: i =0
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: bpos =0
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: bKey[bpos]= 49
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: bKey[bpos+1]= 0
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: количество циклов bKey 2
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: i =1
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: bpos =2
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: bKey[bpos]= 0
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: bKey[bpos+1]= 50
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: bKey[]=[B@1a146713
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: начало шифрования
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: создание цикла
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: количество циклов6
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs:  bText[0]=53
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: количество циклов6
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs:  bText[1]=58
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: количество циклов6
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs:  bText[2]=4
05-15 20:33:47.080 24400-24400/com.test.encriptor2 D/myLogs: количество циклов6
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs:  bText[3]=7
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: количество циклов6
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs:  bText[4]=53
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: количество циклов6
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs:  bText[5]=58
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: bText[]=[B@27ddc202
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: создание массива символов cText
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: длина массива 3
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: создание цикла
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: колличество циклов 3
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: i=0
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: bpos=0
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: символ на выходе㔺
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: колличество циклов 3
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: i=1
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: bpos=2
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: символ на выходеЇ
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: колличество циклов 3
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: i=2
05-15 20:33:47.081 24400-24400/com.test.encriptor2 D/myLogs: bpos=8


Добавлено через 18 часов 6 минут
проблема решена, причина ошибок - моя не внимательность.
не правильно -
Java
1
bKey[bpos + i] = (byte) (num2[i]&0x00FF);
правильно -
Java
1
bKey[bpos + 1] = (byte) (num2[i]&0x00FF);
не правильно
Java
1
int bpos=i << i;
правильно
Java
1
int bpos=i << 1;
закройте тему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2017, 14:46
Помогаю со студенческими работами здесь

Программа вылетает после обновления на 5.0
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Я недавно обновил ОС своего смартфона до 5.0. Моя программа на нем...

Программа вылетает в методе OnCreate
Программа вылетает со следующей ошибкой: 586-3586/spsoft.myapplication E/AndroidRuntime: FATAL EXCEPTION: main ...

Подскажите - программа вылетает в OnCreate
Я действительно совершенно безпонятия от чего она это делает! Программа вылетает на super.onCreate(savedInstanceState); Вот лог ошибки: ...

Вылетает программа, написанная под Android
Программа под Android Вылетает когда работает на переднем плане. Когда работает в фоновом то не вылетает) На сринах видно как программа...

Программа вылетает при переходе на ListActivity
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Моя программа просто вылетает при переходе на ListActivity. Ниже есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru