محافظت از دیتابیس
با سلام خدمت دوستان و اساتید عزیز.
من یه دیتابیس آماده دارم sqlite حالا چطور میشه اونو انکریپت کرد یا واسش پسورد گذاشت. سرچ کردم و تمام پستها رو خوندم در مورد sql chiper هم خوندم اما روش یا متدی که بتونم دیتابیسم را به sql chiper تبدیل کنم و انکریپت کنم توش ندیدم یا من متوجه نشدم . لطفا کمک کنید.
و یه موضوع اینکه من یه برنامه که دیتابیس داشت نصب کردم و اصلا نفهمیدم دیتابیسش کجای موبایل ذخیره شده توی پکیجش که نبود.
private void InitializeSQLCipher() {
SQLiteDatabase.loadLibs(this);
File databaseFile = getDatabasePath(path + "db.sqlite");
//آدرس دیتابیس اولیه که میخای رمزنگاری شه
databaseFile.mkdirs();
databaseFile.delete();
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);
SQLiteDatabase databaseOrginal = SQLiteDatabase.openOrCreateDatabase(path + "dborginal.sqlite", "", null);
// آدرس دیتابیس دومی که رمزنگاری میشه و در ابتدا خالیه
//کار به این صورته که از دیتابیس اولی دونه دونه میخونه و در دیتا بیس دومی مینویسه
database.execSQL("CREATE TABLE tb (id INTEGER PRIMARY KEY NOT NULL DEFAULT ( and .....) )");
{
Cursor cursor = databaseOrginal.rawQuery("SELECT * FROM tb ORDER BY id DESC", null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
int fav = cursor.getInt(cursor.getColumnIndex("fav"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String content = cursor.getString(cursor.getColumnIndex("content"));
database.execSQL("INSERT INTO tb (id,name, content) VALUES
('" + id + "','" + name + "','" + content + "'");
// اینجا موارد رو وارد دیتا بیس جدید میکنه
}
cursor.close();
}
...
onCreat ==> InitializeSQLCipher();
public class Demo_appActivity extends Activity { public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath(); public static String packageName; public static String DIR_APP; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); InitializeSQLCipher(); } private void InitializeSQLCipher() { DIR_APP = DIR_SDCARD + "/android/data/" + packageName; SQLiteDatabase.loadLibs(this); File databaseFile = getDatabasePath(DIR_APP + "/temp"); databaseFile.mkdirs(); databaseFile.delete(); SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null); SQLiteDatabase databaseOrginal = SQLiteDatabase.openOrCreateDatabase(DIR_APP + "/temp1", "", null); database.execSQL("CREATE TABLE IF NOT EXISTS Word (" + "word_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , " + "word_unit TEXT, " + "word_english TEXT, " + "word_translate TEXT" + "word_code TEXT" + "word_check INTEGER DEFAULT(0)" + ")"); Cursor cursor = databaseOrginal.rawQuery("SELECT * FROM Word ORDER BY id DESC", null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("word_id")); String unit = cursor.getString(cursor.getColumnIndex("word_unit")); String english = cursor.getString(cursor.getColumnIndex("word_english")); String translate = cursor.getString(cursor.getColumnIndex("word_translate")); String code = cursor.getString(cursor.getColumnIndex("word_code")); int check = cursor.getInt(cursor.getColumnIndex("word_check")); //String content = cursor.getString(cursor.getColumnIndex("content")); database.execSQL("INSERT INTO Word (word_id,word_unit, word_english,word_translate,word_code, word_check) VALUES ('" + id + "','" + unit + "','" + english + "','" + translate + "','" + code + "'" + check + "'"); } cursor.close(); } }
امروزه امنیت در تمامی زمینه هایی از اهمیت خاصی برخوردار است. برنامه نویسان اندروید نیز برای ذخیره سازی امن اطلاعات الگوریتم های مختلفی را در برنامه های خود پیاده سازی نمایند.با استفاده از این کتابخانه می توان اطلاعات استفاده شده در برنامه را به امنت ترین شکل ممکن رمزنگاری کرد.
ویژگی های رعایت شده در این الگوریتم AES به شرح زیر می باشد
- 256-bit AES key
- CBC mode
- PKCS7Padding
- Blank/Empty IV (default*)
این کتابخانه از اندروید 2.3 به بالا قابل استفاده می باشد.https://github.com/scottyab/AESCrypt-Android
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .