Программирование под Android

программирование android java

Здравствуйте! Написал простую программу под андроид шифрование/дешифрование текста.В главном окне в EditText1 пользователь задает мастерключ, далее кнопкой Button1 ключ заносится в переменную ключа в классе шифрования/дешифрования. В EditText2 пользователь пишет текст который нужно зашифровать/дешифровать. Нажимает на кнопку Button2 и ниже в элементах TextView1 и TextView2 отображаются зашифрованный/расшифрованный текст соответственно.

У меня стоит задача, чтобы при первом запуске программы пользователь задал пароль для входа в программу. Далее при каждом запуске программа требовала бы ввести этот пароль и если пароль верный то открывалась бы главное Activity, если пароль не верный то выходило бы всплывающее сообщение что пароль не верный. Как реализовать чтобы при запусках программы в зависимости от одних условий запускалось одно Activity, при других другое Activity?

Код главного Activity

package com.example.crypto;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Build;
import com.example.crypto.SimpleDESCryptoProvider;

public class MainActivity extends Activity {

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


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}

public void onKey (View v){ // при нажатии на кнопку 1

EditText et = (EditText) findViewById(R.id.editText1);
//if (!ec.getText().toString().equals("FGSJDFGK"))
String str1 = et.getText().toString();
SimpleDESCryptoProvider.seed = str1;//задается мастерключ


}
public void onEnCrypt (View v){ //при нажатии на кнопку 2
TextView ec = (TextView)findViewById(R.id.textViewEnCrypted);
TextView dc = (TextView)findViewById(R.id.textViewDeCrypted);
EditText ep = (EditText) findViewById(R.id.editText2);
String str2 = ep.getText().toString();
String d = SimpleDESCryptoProvider.encrypt(str2);
ec.setText("Зашифолванный текст= " + d);
dc.setText("Расшифрованный текст= " +SimpleDESCryptoProvider.decrypt(d));

}

}


Вот ссылка на проект на всякий случай: http://yadi.sk/d/jqp2Ue-6QhB7H
Ответы:
повесить на одно событие проверки если пароль ок то грузим одно иначе другое
> Вот ссылка на проект на всякий случай: http://yadi.sk/d/jqp2Ue-6QhB7H
У вас в приложение не работает шифрование, т.к. тот алгоритм, который вы используете работает нормально только на десктопе, что касается Android, то в его либах криво реализован один из алгоритмов генерации ключей, который и использует SimpleDESCryptoProvider. Поэтому, максимум, на что способен метод  SimpleDESCryptoProvider.encrypt(str2) на Android - это вернуть hex представление строки str2.
В замен можно взять AES, который реализован здесь: http://stackoverflow.com/questions/19957052/android-encryption-pad-block-corrupted-exception
И довести его до ума, чтоб подходил под вашу задачу: http://srcboard.com/30h1woh


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.