آموزش افزایش امنیت برنامه اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش افزایش امنیت برنامه اندروید می پردازیم همیشه افرادی هستند که به فکر دستکاری برنامه شما باشند به طور مثال شاید در برنامه شما محصولاتی برای فروش باشند و اگر شما قیمت ها را کد نکنید بعضی افراد (هکر ها) می تواند به راحتی مقدار آن را تغییر داده سپس بخش پرداخت را انجام دهند یا به راحتی با برنامه های که در سطح اینترنت پخش شده است می توان برنامه ها را به اصطلاح کرک کنند منظور از افزایش امنیت کد کردن داده ها در برنامه است در ادامه با ما همراه باشید.
مبحث جالبی در جاوا وجود دارد به نام XOR معنی XOR یعنی داده ها را به گونه ای در بیاریم که غیر قابل خواندن باشد به طور مثال وارد کردیم “programchi” به ما یک String طولانی بر گرداند
در اینجا دو تا سوال به وجود می آید یک وقتی ما یک string دادیم چه جوری شکل اولیه آن را به دست بیاریم ؟ دوم چگونه آن را مدیریت کنیم .
ما باید زمانی که کلاس XOR درست می کنیم هم Decode (رمز کردن) و هم encode (رمز گشایی کردن) را برای آن ایجاد کنیم .
ساده ترین شکل کد کردن داده بدون XOR کردن در ادامه XOR را نیر قرار می دهیم.
مبحث دیگه که هست استفاده از Base64 است.
به مثال زیر نگاه کنید.
1 2 3 4 5 6 7 | //Decode String text = "programchi" byte[] data = text.getBytes("UTF-8"); String base64 = Base64.encodeToString(data, Base64.DEFAULT); //Encode byte[] data = Base64.decode(base64, Base64.DEFAULT); String text1 = new String(data, "UTF-8"); |
در بالا یک String تعریف شده سپس بایت آن دریافت می شود بعد با استفاده از کلاس Base64 آن را کد می کنیم. و در دومی دقیقا بر عکس این کار انجام می شود.
کد شبیه به کد بالا (از نظر Structure کد زیر بهتر است)
1 2 3 4 | byte[] data = text.getBytes(StandardCharsets.UTF_8); String base64 = Base64.encodeToString(data, Base64.DEFAULT); byte[] data = Base64.decode(base64, Base64.DEFAULT); String text = new String(data, StandardCharsets.UTF_8); |
کلاس XOR برای استفاده شما یک فایل به نام StringXORer ایجاد کنید و کد زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import android.util.Base64; public class StringXORer { public String encode(String s, String key) { return new String(Base64.encode(xorWithKey(s.getBytes(), key.getBytes()), Base64.DEFAULT)); } public String decode(String s, String key) { return new String(xorWithKey(base64Decode(s), key.getBytes())); } private byte[] xorWithKey(byte[] a, byte[] key) { byte[] out = new byte[a.length]; for (int i = 0; i < a.length; i++) { out[i] = (byte) (a[i] ^ key[i%key.length]); } return out; } private byte[] base64Decode(String s) { return Base64.decode(s,Base64.DEFAULT); } private String base64Encode(byte[] bytes) { return new String(Base64.encode(bytes,Base64.DEFAULT)); } } |
نحوه استفاده از این کلاس بسیار ساده است ولی در آموزش بعدی نحوه استفاده از این کد را قرار خواهیم داد.
این آموزش هم به پایان رسید.
موفق باشید.
سلام
برای برنامه هایی که با دیتابیس هست ( اسکولایت ) همیشه رمزگذاری کرد تا امنیت بالایی داشته باشه؟
بله امکان رمز گذاری وجود دارد.
سلام میشه آموزش رمز گذاشتن و یا پنهان کردن دیتابیس رو آموزش بدید تا دیتابیس در برنامه آندرویدی در امنتیت باشه تا دزدیده نشود
سلام میتونید پست زیر رو مطالعه کنید در این رابطه:
https://programchi.ir/2017/08/08/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%b1%d9%85%d8%b2-%da%af%d8%b0%d8%a7%d8%b1%db%8c-%d8%a8%d8%b1%d9%88%db%8c-%d8%af%db%8c%d8%aa%d8%a7%d8%a8%db%8c%d8%b3-sqlite-%d8%af%d8%b1-%d8%a7%d9%86%d8%af%d8%b1%d9%88/
خیلی خوب بود.
اما من یه برنامه دیدم داخل بازار به اسم “امنیت در برنامه نویسی اندروید” چندین کلاس رمزنگاری دیگه را نیز توضیح داده بود.
خواهش می کنم.
دمت گرم خوب بود
خواهش می کنم موفق باشید.