آموزش رمزگذاری (Encryption) در اندروید
سلام دوستان گرامی امیدوارم حالتون خوب باشد در این سری از آموزش برنامه نویسی اندروید به آموزش رمزگذاری (Encryption) در اندروید می پردازیم آموزش های متعددی در رابطه با رمزگذاری
(Encryption) برای شما قرار دادیم اما انعطاف پذیرسی یا همان Customization آنها زیاد بالا نبود و اگر می خواستید آنها را سفارشی سازی کنید باید کلاس های مختلف برای آن ایجاد می کردید ولی نباید از این بگذریم که آموزش های قبلی هیچوقت توسط هکر ها قابلیت decrypt شدن ندارد و فقط شما با کلیدی که دارید می توانید آنها را decrypt کنید ولی اگر کمی دقیق تر آنها را بررسی کنید متوجه می شوید که حجم باعث می شود حجم هر دیتا بالا برود.
در ادامه می توانید آموزش قبلی را نیز مشاهده کنید.
آموزش رمزگذاری AES (رمز گذاری که در تلگرام استفاده شده است)
ویژگی های این کتاب خانه برای رمزگذاری و رمزنگاری عبارتند از :
پشتیبانی از api یک به بالا
حجم کم کتاب خانه کمتر از 4 کیلوبایت به برنامه اضافه خواهد شد.
حجم کم دیتا بعد از Encryption
قابلیت سفارشی سازی فوق العاده بالا
رمزگذاری 128 , 256 , 512 و 1024
پشتیبانی از رمزگذاری همراه با کلید و salt
پشتیبانی از الگوریتم رمزگذاری های مختلف مانند AES , CBC , PKCS5Padding
استفاده از Base64 برای کوتاه کردن طول رشته و سپس رمزگذاری آن برای کوتاه شدن داده رمز شده
برای استفاده از این کتاب خانه ابتدا باید آن را به پروژه خود اضافه کنید.
ابتدا وار فایل Build.gradle از نوع Top Level شده و در بخش repositories خط زیر را قرار دهید.
1 | maven { url 'https://jitpack.io' } |
وارد فایل Build.gradle از نوع Module شده و در بخش dependencies خط زیر را اضافه کنید.
1 | compile 'com.github.simbiose:Encryption:2.0.1' |
مثل زیر می توانید آن را کد کنید.
1 2 3 4 | String key = "YourKey"; String salt = "YourSalt"; byte[] iv = new byte[16]; Encryption encryption = Encryption.getDefault(key, salt, iv); |
به جای key و salt خودتان مقدار دهی کنید و برای اینکه آن به کد تبدیل شود باید یک آرایه از نوع byte داشته باشید تا تعداد خونه هایی که می خواهید کد شود را مشخص کند در اینجا من 16 خانه اول را کد می کنم.
تا اینجا هنوز کد نشده است برای اینکه رمزگذاری انجام شود کد زیر را قرار دهید.
1 | String encrypted = encryption.encryptOrNull("Text to be encrypt"); |
و برای رمزگشایی یا Decrypt مثل زیر
1 | String decrypted = encryption.decryptOrNull(encrypted); |
همانطور که گفتم این کد را می شود سفارشی کرد به کد زیر نگاه کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 | Encryption encryption = new Encryption.Builder() .setKeyLength(128) .setKey("YourKey") .setSalt("YourSalt") .setIv(yourByteIvArray) .setCharsetName("UTF8") .setIterationCount(1) .setDigestAlgorithm("SHA1") .setBase64Mode(Base64.DEFAULT) .setAlgorithm("AES/CBC/PKCS5Padding") .setSecureRandomAlgorithm("SHA1PRNG") .setSecretKeyType("PBKDF2WithHmacSHA1") .build(); |
همانطور که دید امکانات فوق العاده زیادی دارد.
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
Error:(33, 13) Failed to resolve: com.github.simbiose:Encryption:2.0.1
Show in FileShow in Project Structure dialog
elat chist?
از لینک زیر برای حل کردن مشکلتون استفاده کنید.
http://programchi.ir/2017/04/23/%d8%b9%d9%84%d8%aa-%d8%ae%d8%b7%d8%a7%db%8c-gradle-sync-failed-%da%86%db%8c%d8%b3%d8%aa-%d8%9f/
با سلام
ابتدا باید ازتون تشکر کنم بابت آموزش های فوق العاده تون که تمامشون کاربردی و به زبان ساده و قابل درک ارائه شدن
و اما سوالی داشتم در مورد این رمز گذاری ها
که کارایی این رمز گذاری ها به چه منظور هست؟
این کار از decrept کردن اپ جلوگیری میکنه؟
سلام ممنون از شما..
بله دقیقا همینطوره.رمزنگاری مانع دسترسی به اطلاعات برنامه شما میشود و یا از دستکاری برنامتون توسط افراد جلوگیری میکند.
خب چطوری توی php این اطلاعات رو رمزگشایی کنیم
جواب اینو ندادین منم همین مشکل رو دارم از کد استفاده کردم ولی سمت سرور که میخوام دکدش کنم نمی دونم چیکار باید بکنم
کاش اینو هم میگفتی تا همه چی تویه این سایت تموم میشد
سلام و درود مثل زیر عمل کنید.
function
نحوه استفاده
موفق باشید.
سلام.این function عمل نمیکنه.
سلام بسیار مفید بود ولی من میخوام سمت php هم عملیات encrypt رو انجام بدم میشه تابع اون رو هم بگین …. ممنون
String key = “YourKey”;
String salt = “YourSalt”;
byte[] iv = new byte[16];
Encryption encryption = Encryption.getDefault(key, salt, iv);
سلام اینو تو کجا قرار بدیم؟
سلام و درود
هر جایی که می خواید ازش استفاده کنید !
مچکر
منظورم تو گریدل بزاریم یا تو استرینگها یا مین اکتیویتی؟؟
دقیقا کدوم قسمت؟
سلام خواهش می کنم
اکتیویتی ها.
میشه بیشتر راهنمایی کنید.من تازه کارم و یه اپ کتاب ساختم حالا میخام دیتابیسشو رمزنگاری کنم.مچکر
سلام و درود شما باید زمانی که می خواهید insert را انجام دهید باید string خود را از ورودی متودهایی که در بالا معرفی کردیم رد کنید سپس در هنگام گرفتن خروجی نیز باید string را از متود دیگر آن رد کنید تا رشته صحیح را به شما تحویل دهد.
موفق باشید.
سلام ممنون از آموزش خوبتون ی سوال داشتم من می خوام ویدیو رو رمز نگاری کنم ممنون میشم رهنمایی کنید
سلام و درود مطالبی در این مورد قرار میدهیم.
با سلام من میخام تو سرور داده رو کد کنم وبعد بفرستم اندروید.
اگه زحمتی نیست تابع کد کردن طرف سرورم بزارید
با سلام
من میخام طرف سرور دیتا مو کد کنم و در اندروید دیکد کنم
ممنون میشم تابع کد کردن طرف سرورم قرار بدین
با سلام
اگر کسی به سورس فایل apk دسترسی پیدا کرد و کلید و salt رو بدست آورد . اون وقت تکلیف چیه؟
سلام و درود
به راحتی می تواند اطلاعات را رمزگشایی کند باید این کلید سمت سرور یا در پوشه secret اندرود قرار بگیرید تا قابل دسترسی نباشد.
سلام، میشه بگید پوشه secret اندروید کجاست و چطوری باید در آن ذخیره کنم؟ اگر از shared prefrence استفاده کنم به صورت اتوماتیک در پوشه secret قرار میگیره؟
سلام خسته نباشید
میشه راجب پوشه secret اندروید توضیح بدین یا پست بذارین ؟
هر چی سرچ کردم چیزی پیدا نکردم .
سلام.ممنون از اموزش های خوبتون…میشه لطفا راهنماییم کنید که برای رمزگذاری ویدیو چ کار باید بکنم؟من یه تعداد ویدیو سمت کلاینت پروژم دارم که میخام اینارو بصورت رمزگذاری شده داخل raw قرار بدم و موقع استفاده decryption کنم…ایا کتابخونه ای برای این کار هست در اندروید؟من خیلی سرچ کردم ولی به جوابی نرسیدم…ممنون میشم یه راهنمایی,یه لینک و یا حتی یه سرنخ کوچیک هم شده بهم بدید ..ممنون
با سلام
من میخوام اطلاعات رو توی این اپ کد کنم و به دیتا بیس بفرستم و اطلاعات رو توسط اپ دیگه دریافت کنم چطوری میتونم اطلاعاتی رو که اونور دریافت کردم دیکد کنم
سلام
متاسفانه فرمت rtl رو نمیتونه decrypt کنه
encrypt میکنه ولی حتی با set کردن utf8 هم نمیتونه decrypt کنه و کاملا بدردنخور میشه برای ما ایرانی ها
عذرمیخوام مشکل رو پیدا کردم limit row در دیتابیس بود