prans_tork
جمعه 13 شهریور 1394, 11:00 صبح
با سلام خدمت همه دوستان
لطفاً نظراتتون رو بگید در مورد مطلب زیر:
یه برنامه تحت شبکه نوشتم با استفاده از امکانات sql server 2012 و vs 2013 به صورت دکستاپ برای اجرا در یک شبکه محلی کوچک (درمانگاه).
با یه فرم لاگین که کاربر برای ورود به نرم افزار ازش استفاده میکنه.
سیستم و سیستم عامل سرور(کلاینت) از نوع 64 بیتی و کلاینت ها 32 بیتی هستن (دلیل این کار اینه که سرور خریداری شده و اما کلاینت ها از ابتدا در محل وجود داشتند)
وقتی همه سیستم ها از نظر سیستم عامل (7 یا xp یا 8 و ...) و از نظر 32 یا 64 یکی هستن هیچ مشکلی نیست.
مشکل از اینجا شروع میشه که نوع سیستم عامل کلاینت با نوع سیستم عامل سرور فرق کنه
در این صورت با وجود درست وارد کردن پسوورد، اما پیغامی که پیش بینی کردم نمایش داده میشه (کلمه عبور صحیح نمیباشد).
برای حل این مشکل ناچارم پسوورد هش شده کاربر رو در دیتا بیس تغییر بدم.
من در برنامه این کارو کردم :
(از اونجایی که شبکه Lan هست و بدون دسترسی به اینترنت وبا کاربران محدود)
در موقع ثبت نام که از روی سرور با ویندوز 7 64 بیتی انجام میشه پسوورد رو از کاربر میگیرم و با تابع GetHash تبدیلش میکنم و در دیتابیس ذخیره میکنم.
حالا اگر کاربر از روی سرور لاگین کنه مشکلی نیست
اما وقتی از روی کلاینت با ویندوز 32 بیتی لاگین میکنه، سیستم پیغام صحیح نبودن کلمه عبور رو میده
پس از بررسی فهمیدم که مشکل از اینجا ناشی میشه که خروجی تابع GetHash در سیستم های 32 و 64 بیتی، کاملا متفاوته.
این مشکل موقعی نمود بیشتری داره که سیستم عامل کلاینت 8 و 64 بیتی باشه.
حالا دقیق نمیدونم مشکل از 32 و 64 بیتی بودن سیستم هاست و یا به نوع سیستم عامل (7 و 8 و ...) بستگی داره
حالا با اینکه میدونم میتونم از روش های جایگزین استفاده کنم، میخاستم ببینم برای حل این مشکل راه حلی داری؟؟؟
در واقع دنبال راه حلی برای سازگاری سیستم های 32 بیتی و 64 بیتی هستم(البه به نظر خودم مشکل به خاطر اینه)
برای مثال میتونم از MD5 یا روش های مشابه استفاده کنم.
اما آیا این روشها هم در سیستم های 32 و 64 بیتی خروجی متفاوت خواهند داشت؟
ممنونم از نظراتتون
لطفاً نظراتتون رو بگید در مورد مطلب زیر:
یه برنامه تحت شبکه نوشتم با استفاده از امکانات sql server 2012 و vs 2013 به صورت دکستاپ برای اجرا در یک شبکه محلی کوچک (درمانگاه).
با یه فرم لاگین که کاربر برای ورود به نرم افزار ازش استفاده میکنه.
سیستم و سیستم عامل سرور(کلاینت) از نوع 64 بیتی و کلاینت ها 32 بیتی هستن (دلیل این کار اینه که سرور خریداری شده و اما کلاینت ها از ابتدا در محل وجود داشتند)
وقتی همه سیستم ها از نظر سیستم عامل (7 یا xp یا 8 و ...) و از نظر 32 یا 64 یکی هستن هیچ مشکلی نیست.
مشکل از اینجا شروع میشه که نوع سیستم عامل کلاینت با نوع سیستم عامل سرور فرق کنه
در این صورت با وجود درست وارد کردن پسوورد، اما پیغامی که پیش بینی کردم نمایش داده میشه (کلمه عبور صحیح نمیباشد).
برای حل این مشکل ناچارم پسوورد هش شده کاربر رو در دیتا بیس تغییر بدم.
من در برنامه این کارو کردم :
(از اونجایی که شبکه Lan هست و بدون دسترسی به اینترنت وبا کاربران محدود)
در موقع ثبت نام که از روی سرور با ویندوز 7 64 بیتی انجام میشه پسوورد رو از کاربر میگیرم و با تابع GetHash تبدیلش میکنم و در دیتابیس ذخیره میکنم.
حالا اگر کاربر از روی سرور لاگین کنه مشکلی نیست
اما وقتی از روی کلاینت با ویندوز 32 بیتی لاگین میکنه، سیستم پیغام صحیح نبودن کلمه عبور رو میده
پس از بررسی فهمیدم که مشکل از اینجا ناشی میشه که خروجی تابع GetHash در سیستم های 32 و 64 بیتی، کاملا متفاوته.
این مشکل موقعی نمود بیشتری داره که سیستم عامل کلاینت 8 و 64 بیتی باشه.
حالا دقیق نمیدونم مشکل از 32 و 64 بیتی بودن سیستم هاست و یا به نوع سیستم عامل (7 و 8 و ...) بستگی داره
حالا با اینکه میدونم میتونم از روش های جایگزین استفاده کنم، میخاستم ببینم برای حل این مشکل راه حلی داری؟؟؟
در واقع دنبال راه حلی برای سازگاری سیستم های 32 بیتی و 64 بیتی هستم(البه به نظر خودم مشکل به خاطر اینه)
برای مثال میتونم از MD5 یا روش های مشابه استفاده کنم.
اما آیا این روشها هم در سیستم های 32 و 64 بیتی خروجی متفاوت خواهند داشت؟
ممنونم از نظراتتون