زمانی قدیم همه یه دفتر یادداشت داشتن و تلفن ها و یادداشت هاشونو تو اون مینوشتن

الان که دیگه زمان خودکار رو دفترچه یادداشت گذشته البته نه همه جا 

وقتی لازمه سریع یه شماره و یا حتی پسورد و متنی یادداشت کنید که خصوصی باشه

این پست رو به ساخت دفترچه یادداشت رمزنگاری شده در اندوید استودیو  اختصاص دادم بدون لاگین چون خودش امنیت کافی برای ذخیره اطلاعات رو داره

بدون لاگین طراحی کردم به دلیل دست و پاگیر بودن در عوض پسورد رو از شما میگیره و متن رو تغییر میده

برای ساخت لیست ویو تو اندروید استودیو و همچنین گرفتن ورودی از کاربر در صفحه دوم یا َAddActivityسه تا edittext بزارید یکی برای عنوان متن دومی برای پسورد شما و سوی برای متن

دوستان  در صورت بروز مشکل در بیلد پروژن موضوع رو در این پست توضیح دادم و نرم افزاری که تو سی شارپ  طراحی کردم رو برای همین کار هست و بدون نیاز به فیلتر شکت بیلد انجام میشه

ابتدا میبایست دیتابیس و جدول و فیلدها مربطه رو بسازیم یک کلاس با نام DbHelper میسازیم

اینا کدها ساخت دیتابیس  و تیبل هست برای اینکار از کلاس SQLiteDatabase استفاده میکنیم

 

public class DbHelper extends SQLiteOpenHelper {

    static String DATABASE_NAME = "DbUrmia";
    public static final String TABLE_NAME = "tblurmia";
    public static final String KEY_ID = "id";
    public static final String KEY_USER = "Username";
    public static final String KEY_PASS = "Password";
    public static final int VERSION = 1;

    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        String TABLECREATE = " CREATE TABLE " + TABLE_NAME + "(" + KEY_ID + " INTEGER PRIMARY KEY , " + KEY_USER + " TEXT , " + KEY_PASS + " TEXT )";
        sqLiteDatabase.execSQL(TABLECREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

        sqLiteDatabase.execSQL(" DROP TABLE IF EXISTS " +TABLE_NAME );
        onCreate(sqLiteDatabase);
    }
}

 

 

وقتی دیتابیس ساخته شد میبایست در اکتیویتی اصلی با ایجاد به لیست ویو اطلاعات دیتابیس رو بگیریم برای اینکار در لایوت main یه لیست ویو ایجاد کنید و یه لایوت هم بصورت دستی ایجاد کنید و 3 تا edittext جهت نمایش اطلاعات اون 3 ورودی که از کاربر میگیرن اضافه میکنیم

خب جهت دریافت اطلاعات دیتابیس ابتداباید از کلاس دیتابیس  نمونه سازی انجام دهیم و همیچین برای هر ورودی یه آرایه تعریف کنیم و هر ورودیرو بهش نسبت دهیم

 

  private DbHelper dbHelper;
    private SQLiteDatabase database;
    private ArrayList<String> user_id=new ArrayList<String>();
    private ArrayList<String> user_usernm=new ArrayList<String>();
    private ArrayList<String> user_pass=new ArrayList<String>();

 

قبل از نوشتن کدها اصلی باید یه کلاس بنام  َAddActivity ایجاد مکنیم و با استفاده از ارسال پارامتر به کدهای بالا  و یک کانستراکتور اطلاعات رو از دیتابیس استخاراج میکنیم

 

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add);
    btnsave=(Button)findViewById(R.id.btnsave);
    btncancel=(Button)findViewById(R.id.btncancell);
    btndec=(Button)findViewById(R.id.btndecrypt);
    txtuser=(EditText)findViewById(R.id.txtinputuser);
    txtpss=(EditText)findViewById(R.id.txtinputpass);
    txtsetpass=(EditText)findViewById(R.id.txt_aes_pass);

    IsUpdate=getIntent().getExtras().getBoolean("update");
    if (IsUpdate)
    {
        id=getIntent().getExtras().getString("SendID");
        Muser=getIntent().getExtras().getString("SendUser");
        Mpass=getIntent().getExtras().getString("SendPass");
        txtuser.setText(Muser);
        txtpss.setText(Mpass);
    }
    btnsave.setOnClickListener(this);
    dbHelper=new DbHelper(this);


    btncancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent m=new Intent(AddActivity.this,MainActivity.class);
            startActivity(m);
        }
    });




    btndec.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if (checkinpu())
            {
                String txtpass=txtsetpass.getText().toString();
                String Decrypt=AesEncryption.Decryption(txtpss.getText().toString(),txtpass);
                Log.d(TAG,Decrypt);
                txtpss.setText(Decrypt);
            }
            else
            {
                Toast.makeText(getApplicationContext(),"Input hash To encrypt",Toast.LENGTH_SHORT).show();
            }
        }
    });
}

خب در اکتیویت اصلی در متد oncreate با استفاده از یه اینتن ساده میتونیم اطلاعات رو به لیست ویو ارسال کنیم

 

findViewById(R.id.btnadd).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent myintent=new Intent(getApplicationContext(),AddActivity.class);

                myintent.putExtra("update",false);
                startActivity(myintent);
            }
        });

 

برای رمزتگاری اطلاعات متنی نیز یه کلاس جاوا ایجاد کرده و کدهای aes روداخل میزاریم هم رمزنگاری و هم رمزگشایی 

 

 public static String Encryption(String StrToEnc, String secret) {
        try {
            setkey(secret);
            Cipher mcioher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            mcioher.init(Cipher.ENCRYPT_MODE, secretkey);
            return Base64.encodeToString(mcioher.doFinal(StrToEnc.getBytes("UTF-8")), Base64.DEFAULT);

        } catch (Exception e) {
            System.out.println("Error While Encryption :" + e.toString());
        }
        return null;
    }


    public static String Decryption(String StrToDEC, String userpass) {
        try {
            setkey(userpass);
            Cipher mycipher=Cipher.getInstance("AES/ECB/PKCS5Padding");
            mycipher.init(Cipher.DECRYPT_MODE,secretkey);
            return new String(mycipher.doFinal(Base64.decode(StrToDEC,Base64.DEFAULT)));

        } catch (Exception e) {
                System.out.println("Error in Decryption"+e.toString());
        }
        return null;
    }

 

 

در پایان سورس رو میذاریم امیدوارم براتون مفید باشه

 

دانلــود سورس لیست ویو اندروید استودیو