PDA

View Full Version : انکد و دیکد



benyamin_pc
شنبه 27 خرداد 1391, 21:20 عصر
سلام
تو ی برنامه نیاز هست که محتوائیو انکد کنم و بعدا با برنامه خودم ی جا دیگه دیکدش کنم , حالا اینجا یه مشکلی هست , اگه این سورس کسی نگاه کنه دیگه این کدینگ کلا بی ارزش میشه! چون داره دیکدشو میبینه چه ریختی انجام میدم و اون محتوارو با ی برنامه دیگه با همون روش دیکدی که تو سورس دیده دیکد میکنه

plague
شنبه 27 خرداد 1391, 21:58 عصر
خب شما نیاز به یه کلید داری برای دیکد کردن اینجوری حتی اگه کسی سورس رو هم ببینه نمیتونه دیکد کنه میتونید از الگوریتم های قابل بازگشت مثل rsa استفاده کنید که نیاز داره طرز کارشو یاد بگیرید هرچند زیاد پیچیده نیست http://stackoverflow.com/questions/6612098/rsa-encryption-and-decryption

یا میتونی خودتون یه کلید بسازی که چگونگیش بستگی داره به اونچیزی که میخای کریپت کنی
مثلا یه مثال ساده من بخام عدد 3 رو کریپت کنم میام اینجوری کریپت میکنم :
یه کلید از یوزر درخواست میکنم که وارد کنه و اون کلید رو پست میکنم به همراه محتوا به اسکریپت کریپت کننده



$x = 3 ;
$key = $_post['key']; // 20 مثلا
$crypted_x = $x*$key;



crypted_x
ميشه کريپت شده x
حالا وقتی که یوزری میخاد دیکریپتش کنه ازش میخای اول کلید رو وارد کنه مثلا طرف 20 رو وارد میکنه اونوقت شما کلید رو میفرستی به اسکریپت دیکریپت کننده




$key = $_post['key'];
$x = $crypted_x/$key;




اینجوری حتی اگه کسی سورس رو هم ببینه نمیتونه کاری از پیش ببره
البته این یه مثال خیلی ساده بود من اگه بخام بنویسم جوری مینویسم که مثلا اون عملیات ریاظی هم در خوده کلید استتار بشه

benyamin_pc
شنبه 27 خرداد 1391, 22:22 عصر
خودمم قبلا برای یه پروژه دیگه همینو انجام داده بودم اما تو این پروژه اینو نمیشه استفاده کرد , چون عمل دیکد باید خودکار باشه و از کاربر چیزی نگیره , برا همین حتی اگه کلیدم بذارم مجبورم جائی کلیدو ذخیره کنم تا بعد بتونه خودکار از اونجا بخونه , حالا حتی اگه کد شده هم کلیدو ذخیره کنم باز باید دیکد خود کلیدم تو برنامه بذارم که موقعی که لازمه کلید خودکار دیکد شه و بره با این کلید خودکار محتوارو دیکد کنه .. یعنی هرکارش میکنم یه دور باطله!

benyamin_pc
شنبه 27 خرداد 1391, 22:49 عصر
یه شیوه ای پیدا کردم

plague
شنبه 27 خرداد 1391, 22:59 عصر
کلید رو میتونی به ازای هر کد کردن به صورت یک یا چند عدد رندوم تولید کنی و به به همراه خوده مطلب کریپت شده در دیتابیس ذخیره کنی لازم نیست که توی سورس کد یه کلید ثابت باشه
دیگه طرف سورس رو میبینه توی دیتابیس رو که نمیبینه


$x = 3;
$key = rand(2,9);
$x_crypted = $x * $key ;

هم x_crypted و هم Key رو توی دیتابیس در یک سطر ذخیره میکنی
و وقتی از دیتابیس میخونیش کلیدش رو هم میخونی و دیکد میکنی اتوماتیک

اینجوری حتی اگه کسی سورس رو هم ببینه چون رندوم تولید میشه کلید به دردش نمیخوره

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

benyamin_pc
یک شنبه 28 خرداد 1391, 00:05 صبح
البته یه راهی پیدا کردم اما اینکه الان گفتین که نمیشه , شما کلیدو رندوم تولید کردین اما دیکد که با کلید رندوم ساخته شده قبلا هست , یعنی یه کلید ثابت , دیکد با کلید رندوم که معنا نداره , پس اگه اون کلید رندوم ساخته شده قبلی که انکد باهاش انجام شده و شما ذخیرش کردین که بعدا با همین دیکد انجام شه کسی از دیتا بیس ببینه و سورسم نگاه کنه تمومه ..

plague
یک شنبه 28 خرداد 1391, 00:29 صبح
من متوجه خط اول پاسختون نشدم که چی میگید اما خلاصه از خط دومتون اینجور برداشت کردم که میگید اگه طرف دیتابیس رو نگاه کنه و سورس کد رو هم نگاه کنه میتونه کلید رو بدست بیاره و دیکد کنه
بله این هست من فرض رو بر این گزاشته بودم که طرف ما به دیتابیس دسترسی نداره

اگه انقد دسترسیش کامل باشه که هم دیتابیس رو بتونه ببینه و هم سورس رو ! این روش مناسب نخواهد بود

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

hsl_hsv
یک شنبه 28 خرداد 1391, 09:37 صبح
بله درسته

benyamin_pc
یک شنبه 28 خرداد 1391, 09:41 صبح
بله درسته

درست که درسته اما تو این مورد جواب نمیده