PDA

View Full Version : یه تابع مثل md5



tabib_m
چهارشنبه 18 آبان 1384, 19:39 عصر
با سلام.
آقا همون طور که میدونید برگردوندن مقدار تابع md5 امکان پذیر نیست.
حالا من یه تابع میخوام که یه جورایی بشه مقدارش رو برگردوند.
مثلا:


$pass="Mohsen";
$hidden_pass=test($pass);
$query=mysql_query("insert into ...");

$return=return_test($hidden_pass,"$secret_password");


که در اون $sectet_password قبلا تعریف شده.
به طور کلی من میخوام کسی که به دیتابیس دسترسی داره نتونه پسوورد ها رو بفهمه ولی کسی که به کد دسترسی داره بتونه این کار رو بکنه. در اینجا secret_password یک پسوورد کلی برای برگردوندن همه ی پسوورد هاست و فقط توی کد به کار میره.

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

oxygenws
چهارشنبه 18 آبان 1384, 20:46 عصر
mcrypt
base64

tabib_m
جمعه 20 آبان 1384, 19:16 عصر
به راهنمای php مراجعه کردم. از mcrypt که جیزی سر در نیاوردم، ولی اون طوری که از base64 سر دراوردم فهمیدم که در استفاده از این تابع هر کسی که به دیتابیس دسترسی داشته باشه، میتونه رمز رو به دست بیاره. همون طور که عرض کردم:

به طور کلی من میخوام کسی که به دیتابیس دسترسی داره نتونه پسوورد ها رو بفهمه ولی کسی که به کد دسترسی داره بتونه این کار رو بکنه.
به هر حال اکه یک مقدار راهنمایی در مورد کار با تابع mcrypt بفرمایید ممنون میشم.

oxygenws
شنبه 21 آبان 1384, 11:14 صبح
منظورت از این چیه؟؟

حالا من یه تابع میخوام که یه جورایی بشه مقدارش رو برگردوند.
"مقدارش رو برگردوند" یعنی چی؟!
من از عبارت فوق برداشت کردم که یک الگوریتم دو طرفه می خوای.

tabib_m
یک شنبه 22 آبان 1384, 10:32 صبح
بله شما درست میفرمایید.
بهتر بود بکم: من یه تابع میخوام که هر کسی نتونه مقدارش رو برکردونه، فقط کسی بتونه که مثلا یک رمز رو داره و یا به کد برنامه دسترسی داره.
توی اون مثالی که زدم فکر کنم منظورم رو رسونده باشم.
من حتما برام مهم نیست که این تابعه باشه، فقط میخوام نتیجه ی زیر رو داشته باشم:

به طور کلی من میخوام کسی که به دیتابیس دسترسی داره نتونه پسوورد ها رو بفهمه ولی کسی که به کد دسترسی داره بتونه این کار رو بکنه.
اکه تابعی که به در این کار میخوره هست، بکید ممنون میشم. و اکر هم نیست یه راه حل برای این کار به من بدین.

oxygenws
یک شنبه 22 آبان 1384, 10:50 صبح
همچنان صحبتت گنگه (همینطور کدی که اون بالا نوشتی)
سری توابع mcrypt یا md5 یا sha یا ... می تونه کمکت کنه.
ضمنا، امنیت md5 هم تا حدی زیاد هست که سایت شما هک نشه :)

tabib_m
یک شنبه 22 آبان 1384, 11:55 صبح
أقا شما فرض کنید که من یه سایت روی اینترنت دارم که توی اون از دیتابیس استفاده شده. بعد بنا به دلایلی یک نفر به دیتابیس سایت دسترسی داره ، ولی کد برنامه ای که من نوشتم رو نداره. اونوقت توی این سایت جند نفر عضون که هر کدوم یه یوزر و رمز دارن که توی دیتابیس ثبت شده.
من میخوام رمزی که توی دیتابیس ثبت شده به صورت نامفهوم (مثل رشته هایی که md5 تحویل میدن) باشه.
حالا یه موقع بیش میاد که یکی از اعضا رمزش رو یادش میره و من میخوام برای اون رمزش رو ارسال کنم. جیکار کنم که بتونم رمز اون فرد رو بفهمم؟

oxygenws
یک شنبه 22 آبان 1384, 17:40 عصر
بعد بنا به دلایلی یک نفر به دیتابیس سایت دسترسی داره
همچنان نا مفهوم :)
اگر طرف دسترسی write داشته باشه، تقریبا هیچ راه جلوگیری نداری.


حالا یه موقع بیش میاد که یکی از اعضا رمزش رو یادش میره و من میخوام برای اون رمزش رو ارسال کنم. جیکار کنم که بتونم رمز اون فرد رو بفهمم؟
در این مورد، برو تست کن ببین سایت های بزرگ چکار می کنند، مثل یاهو یا هاتمیل یا ... اونها هم مسلما نمی تونند رمز md5 شدشون رو برگردونند :)

javad_hosseiny
یک شنبه 22 آبان 1384, 19:34 عصر
حالا با تمامی توصیفات شما (فرض محال، محال نیست) که اگر به دیتابیس شما دسترسی داشته باشد ولی رمزهای برایش قابل شناسایی نباشد
می توانید از یک تابع دو طرفه برای این منظور استفاده کنید (با توجه به نوع طراحی و الگوریتم توسط خودتان باید نوشته شود) (به طور مثال حروف را به کد اسکی تبدیل کرده و به مبنای دودویی برده و نهایتا یک شیفت هم روش انجام بدید و یا بسته به ذوق خودتان روش های دیگری را طراحی کنید)

ولی استفاده از رمز MD5 بهتر است و برای زمانی که کاربر رمز را فراموش کرده بهتر است یک رمز تصادفی ایجاد کنید و پس از تغییر در جدول آن را برای کاربر ایمیل کنید

tabib_m
یک شنبه 22 آبان 1384, 20:07 عصر
خیلی ممنون
از هر دو راه خوشم اومد، یکیشو انتخاب میکنم :)
___________
فقط ببخشید ، من در مورد تابع mcrypt کنجکاو شدم ، میشه بکید طرز کار با اون ججوریه؟ جون از phpmanual جیزی سر در نیاوردم. :)

oxygenws
یک شنبه 22 آبان 1384, 22:46 عصر
اگر سوالی در مورد mcrypt داری، می تونی در یک thread مجزا بپرسی :)

tabib_m
دوشنبه 23 آبان 1384, 10:23 صبح
باشه خیلی ممنون.