تور لحظه آخری
امروز : جمعه ، 9 شهریور 1403    احادیث و روایات:  امام علی (ع):زكات دانش، آموزش به كسانى كه شايسته آن‏اند و كوشش در عمل به آن است.
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها




آمار وبسایت

 تعداد کل بازدیدها : 1813237270




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

رمزنگاری و تولید چکیده (hash) پیام 128 بیتی با کلاس MHR1 -


واضح آرشیو وب فارسی:سایت ریسک: رمزنگاری و تولید چکیده (hash) پیام 128 بیتی با کلاس MHR1 Mohammad_Shams 22 شهريور 1389, 14:08سلام این کلاس را مدتی پیش در AS3، برای تولید چکیده پیام طراحی کردم. کلاس MHR1 یک روتین رمزنگاری 128 بیتی (خروجی 32 کاراکتری در مبنای 16) است که به صورت open source در این فروم منتشر میشود. اگر با توابع hash آشنا نیستید، این مطلب را مطالعه کنید: مقاله md 5 () هدف توابع hash، رمزنگاری و تولید چکیده با طول یکسان از هر نوع رشته ورودی است، که کاربرد آنها موارد زیر هستند: - ذخیره کلمات عبور به صورت چکیده در دیتابیس - تولید امضای دیجیتال - تشخیص صحت یا تغییر محتوای فایلها - ایجاد امضا در ارسال پارامترهای url برای بررسی صحت آنها و غیره تفاوت این الگوریتم با روشهای مرسومی مانند md 4 , md 5، در سرعت بیشتر و سادگی آن است. البته کاملا روشن است که به دلیل دست‌ساز بودن الگوریتم آن، به اندازه الگوریتمهای استاندارد، ایمن نیست، اما لااقل امنیت آن برای طراحان فلش کافی است. مثال چگونگی کار به همره خود کلاس در فایل ضمیمه قرار دارند. مثال: import classes.mshams.MHR1; trace(new MHR1("Your String1 Here...")); trace(new MHR1("Your String2 Here...")); var myHash: MHR1 = new MHR1(); trace(myHash.getHash("Your String1 Here...")); trace(myHash.getHash("Your String2 Here...")); ++Hadi++ 22 شهريور 1389, 18:27خیلی ممنون محمد عزیز ... مبحث مهم بود ، از نظر تایپیکی هم مهم شد ... amin.flash 23 شهريور 1389, 20:10سلام محمد جان مقالت رو تو سایت خوندم عالی بود و گفته بودی این فرایند یکطرفه هست اقا یه زحمت دارم نمیدنم ممکنه معکوس این کدینک رو بنویسی در کل میخواستم اگه ممکنه 2 تا کلاس بینویسی واسه ایجاد کد و یکی دیگه واسه چک کردن کد (برا ایحاد رمز) Mohammad_Shams 23 شهريور 1389, 20:27سلام محمد جان مقالت رو تو سایت خوندم عالی بود و گفته بودی این فرایند یکطرفه هست اقا یه زحمت دارم نمیدنم ممکنه معکوس این کدینک رو بنویسی در کل میخواستم اگه ممکنه 2 تا کلاس بینویسی واسه ایجاد کد و یکی دیگه واسه چک کردن کد (برا ایحاد رمز) از آنجا که کدهای HASH، کاملا یکطرفه هستند، پس هیچ روش معکوسی برای آنها وجود ندارد. تنها راه Crack کردن آنها به روش bruteforce است. روش استفاده از hash در ایجاد password به این صورت است که شما پس از دریافت رمز، Hash آن را محاسبه کرده و در دیتابیس ذخیره میکنید. خود پسورد را هم دور می اندازید چون با وجود hash ، به آن نیازی نیست. برای مقایسه رمز دریافتی از کاربر با پسورد موجود در دیتابیس هم، پس از دریافت رمز، hash آن را محاسبه کرده و با hash موجود در دیتابیس مقایسه میکنید. اگر hash ها با هم برابر بودند، یعنی پسوردهای اصلی هم با هم برابر بودند. amin.flash 23 شهريور 1389, 20:31از آنجا که کدهای hash، کاملا یکطرفه هستند، پس هیچ روش معکوسی برای آنها وجود ندارد. تنها راه crack کردن آنها به روش bruteforce است. روش استفاده از hash در ایجاد password به این صورت است که شما پس از دریافت رمز، hash آن را محاسبه کرده و در دیتابیس ذخیره میکنید. خود پسورد را هم دور می اندازید چون با وجود hash ، به آن نیازی نیست. برای مقایسه رمز دریافتی از کاربر با پسورد موجود در دیتابیس هم، پس از دریافت رمز، hash آن را محاسبه کرده و با hash موجود در دیتابیس مقایسه میکنید. اگر hash ها با هم برابر بودند، یعنی پسوردهای اصلی هم با هم برابر بودند. ممنون از توضیحت ولی من میخوام خودم مثلا 8000 پسورد ایجاد کنم و این رو در اختیار کاربرانی که میخوام بدارم و چون برنامه نصب نمیشه دیتابیسی هم وجود نداره پس نیاز به یک فرایند مکمل برای چک کردن کدی هست که از سمت کاربر وارد میشه BehrouzPc 23 شهريور 1389, 20:58بسیار سپاسگزارم برای کلاس Hash ، محمد شمس عزیز :rose: این مورد ها را برای ورودی input string تست نمایید 22222222222222222222222222222222222222222222222222 22222222222222222222 یا 11111111111111111111111111111111111111111111111111 111111111111111 یا 33333333333333333333333333333333333333333333333333 33333333333 یا 44444444444444444444444444444444444444444444444444 444444 یا 55555555555555555555555555555555555555555555555555 5555 یا be222222222222222222222222222222222222222222222222 222222222222222222222222 و... Generated Hash itititititititititititititititit موفق و پیروز باشید Mohammad_Shams 23 شهريور 1389, 21:19سلام جالبه، چون با رشته‌های طولانی تستش نکرده بودم، نمیدونستم یه جای کار Overflow میشه. ممنون که تست کردید. سریعا این ایراد را برطرف میکنم arjmand 200 23 شهريور 1389, 22:07جالب بود ، ولی اگه قبل از نوشتن کلاس یه بار as3corelib رو چک میکردی (crypto/MD 5) خیلی کمکت میکرد Mohammad_Shams 23 شهريور 1389, 22:42سلام مشکل حل شد. محدودیت کلاس Number را درست حساب نکرده بودم. جالب بود ، ولی اگه قبل از نوشتن کلاس یه بار as3corelib رو چک میکردی (crypto/MD 5) خیلی کمکت میکرد بله قبلا با as3corelib کار کرده‌ام. همچنین کلاسهای متعدد دیگری برای الگوریتهای DES, AES و غیره هم موجود است. اما هدف من از ارائه این کلاس، طراحی ساده‌ترین روش برای ایجاد Hash بود. در واقع این یک کلاس آموزشی برای فهم نحوه عملکرد و ساختمان الگوریتمهای رمزنگاری یکطرفه بود و نمی‌خواستم الگوریتمهای موجود را در as3 پیاده سازی کنم. در هر صورت کلای opensource است و خوشحال میشوم اگر بقیه دوستان هم آن را تکمیل و update کنند. (البته قبلش خوب تستش کنن که مثل الان مشکل پیش نیاد) BehrouzPc 24 شهريور 1389, 00:12ممنون محمد شمس عزیز ، بنده تست کردم و مساله ای مشاهده نکردم :rose: موفق و پیروز باشید ++Hadi++ 07 مهر 1389, 14:35sسلام محمد جان کاری که شما انجام دادید خیلی ارزنده هست . یه پیشنهاد : اگه کاربری که می خواد مثلا یه ایکسملو به رمز تبدیل کنه ، بیاد و از کلاس شما استفاده کنه می تونه ... ولی شاید افراد دیگه ای که از جریان کار و اینکه مثلا من دارم از کلاس شما استفاده می کنم ، خبر دار بشن ، به راحتی بتونن سو استفاده کنن . من تو این فکر هستم که یه قابلیتی رو به کلاس شما اضافه کنم که رمز رو به نسبت یه رشته دیگه که اون فقط تو ذهن مثلا من باشه ، بیرون بده و خوبی این کار اینه که مثلا برای یه رشته خاص مثل "flashcs5" می تونین به نسبت رشته کلیدی که به این کلاس پاس می دین ، رمزی متفاوت رو دریافت کنین ... نظر شما چی هست ؟ Mohammad_Shams 07 مهر 1389, 16:31سلام ممنون کاربری که می خواد مثلا یه ایکسملو به رمز تبدیل کنه ، بیاد و از کلاس شما استفاده کنه از این کلاس فقط برای ایجاد hash استفاده میشود و یک روش کدگذاری داده (Generic encryption) نیست. در نتیجه اگر کسی از دیتای خود، با این کلاس یک چکیده (Message Digest ) تولید کرده و در جایی ذخیره نمود، دیگر نمیتواند دیتای اولیه خود را از روی آن بازیابی کند. در نتیجه داده ای که از روی آن Hash ایجاد شده، خودش نوعی کلید غیر قابل بازیابی است. ولی شاید افراد دیگه ای که از جریان کار و اینکه مثلا من دارم از کلاس شما استفاده می کنم ، خبر دار بشن ، به راحتی بتونن سو استفاده کنن همونطور که گفتم نمیشه از روی Hash، داده اولیه را حساب کرد. من تو این فکر هستم که یه قابلیتی رو به کلاس شما اضافه کنم که رمز رو به نسبت یه رشته دیگه که اون فقط تو ذهن مثلا من باشه... این کار میشه تقریبا نوعی Salted Hash. اما نیازی نیست قابلیت جدیدی به کلاس استفاده کنید. برای اینکه از بیشترین امنیت ممکن بهره‌مند بشوید، میتونید رشته مورد نظرتون را چند بار متوالی Hash کنید. به فرض اینکه کسی بدونه شما از کلاس استفاده کرده‌اید، شما می‌تونید مثلا از رشته خودتون دوبار Hash بگیرید و اونها را به هم متصل کرده و یکبار هم از اتصال اونها Hash بگیرید. اینطوری هیچ کس نمیتواند حدس بزند شما دقیقا از چه چیزی Hash ایجاد کرده اید. ++Hadi++ 10 مهر 1389, 17:40از شما دوست عزیزم متشکرم . من این قابلیت رو (افزودن رشته ثانویه ) اضافه کردم و خوبیش فقط به اینه که می تونیم برا n کار مختلف که قراره مثلا از یه ساختار ایکسمل یا از کلمات شبیه به هم استفاده کنند ، با تغییر کلمه دوم ، n جور کلمه رمز hash مختلف داشته باشیم . البته در مورد ایکسمل بیان شما کاملا متین . ولی من برا اینکه حجم پردازشی کار خیلی بالا نره اومدم و مثلا هر 200 کاراکتر ایکسمل یکی رو انتخاب و در یه رشته concat کردم و در نهایت اینو با رشته پسورد دوم وارد کلاس شما کردم . در کل خیلی ممنونم ... در مورد کلاس ویرایشی هم مطمئن باشید که محفوظ برا شما می مونه و جایی آپ نمی شه ... موفق باشید و خیلی ممنون ... Mohammad_Shams 11 مهر 1389, 16:23سلام اتفاقا خیلی خوشحال می‌شوم، اگر قابلیت جدید یا ایده‌ای برای تکمیل یا افزایش امکانات این کلاس اجرا کرده و نتیجه را در همین جا اضافه کنید. اگر دقت کرده باشید در سورس کلاس، بخشی به نام LICENSE BLOCK تعبیه کردم که به این معناست که هر گونه استفاده و تغییر در کلاس آزاد است. معمولا در عرف پروژه‌های open source (البته این کلاس خیلی کوچکتر از این حرفهاست که پروژه محسوب شود) به این صورت است که با توجه به نوع مجوز (که در اینجا MPL است) هر توسعه گر دیگری که امکانات جدیدی به آن اضافه میکند، اطلاعاتی مانند (Date, Author, Version, Update , ...) را در انتهای بخش UTES (بعد از END LICENSE BLOCK) اضافه میکند. به این ترتیب کسی که یک فایل open source را دریافت میکند، با مطالعه آن بخش متوجه میشود که نویسندگان یا توسعه دهنگان آن پروژه چه کسانی بوده و هر کدام در چه تاریخی چه قابلیتی به آن اضافه کرده‌اند. ++Hadi++ 12 مهر 1389, 14:04محمد جان بینهایت از لطفت سپاسگزارم ... والا خیلی حرفه ای پیش نبردم باز به روی چشم به زودی یه سمپل واستون می زارم . البته کاری که من کردم خیلی سخت نیست چون هر تغییری که در جفت کاراکتر های 16 رقمی بدیم ، با متد substr فقط دو رقم اولش در رمز اصلی قرار می گیره ... من خیلی کار ساده ای کردم . در نهایت به لطف خدا و با یازی شما ، دیگه امکان سو استفاده از ایکسمل پروژه ام نیست چرا که از تگ های داخلی ایکسمل رمز خاصی بوجود می یاد که این رمز رو یه برنامه exe (با قرار دادن ایکسمل کنارش) به نمایش می زاره و کافیه اون رمز رو در فیلد attribute با عنوان مثلا key قرار بدیم تا خروجی اصلی بتونه اونو تایید کنه وگرنه ایکسمل تایید نمی شه ... موفق باشید ... BehrouzPc 12 مهر 1389, 14:17محمد جان بینهایت از لطفت سپاسگزارم ... والا خیلی حرفه ای پیش نبردم باز به روی چشم به زودی یه سمپل واستون می زارم . البته کاری که من کردم خیلی سخت نیست چون هر تغییری که در جفت کاراکتر های 16 رقمی بدیم ، با متد substr فقط دو رقم اولش در رمز اصلی قرار می گیره ... من خیلی کار ساده ای کردم . در نهایت به لطف خدا و با یازی شما ، دیگه امکان سو استفاده از ایکسمل پروژه ام نیست چرا که از تگ های داخلی ایکسمل رمز خاصی بوجود می یاد که این رمز رو یه برنامه exe (با قرار دادن ایکسمل کنارش) به نمایش می زاره و کافیه اون رمز رو در فیلد attribute با عنوان مثلا key قرار بدیم تا خروجی اصلی بتونه اونو تایید کنه وگرنه ایکسمل تایید نمی شه ... موفق باشید ... هادی عزیز با md 5 هم فکر کنم بشه همین کار رو انجام داد فایل نهایی xml ما به کد md 5 دارد که درون برنامه ابتدا چک می شود و بعد استفاده در مورد xml محمد شمس عزیز توی یکی از پروژه هاش از روش تبدیل به فایل باینری استفاده کرده بود که به نظرم برای این کار اون روش هم خوب هست /// بنده هم با محمد در مورد این نوع ارتقاع کد ها موافق هستم. ++Hadi++ 17 مهر 1389, 21:21سلام توجه : ورژن 1.3 کلاس محمد عزیز آپدیت شد . من تو این فکر بودم که چطور می شه راهی پیدا کرد که بتونیم از یه رشته خاص ، چند رمز رو بیرون بکشیم . خوب به این فکر افتادم که رشته دیگه ای رو به عنوان کد واژه به این کلاس خوبی که محمد عزیز زحمتشو کشیدند ، اضافه کنیم تا رشته ورودی اصلی با این رشته کد واژه ترکیب شه تا بتونیم از یه رشته ، رمز های مختلفی رو داشته باشیم . پس این کلاس رو ویرایش کردم تا به این هدف برسم و اینو برای عموم آپ کردم . زحمت اصلی این کلاس رو دوست عزیزم محمد شمس کشیده اند و ما هم به قدری ولو نا چیز ، اونو بهبود بخشیدیم ، مثالی رو آپ کردم که در اون ، ایکسملی خونده می شه و بعد کاراکتر های خاصی از تگ های خاص اون خونده می شه و در فایل exe نمایش رمز ، این کاراکتر ها در یه رشته به همراه کد واژه به این کلاس پاس داده می شه و بعد شما شاهد این هستین که رمز نهایی از فایل exe قفل ساز ، به نمایش در می یاد . سپس با همین الگریتم ، این ایکسمل در فایل اصلی خونده می شه و فایل اصلی چک می کنه که آیا پسوورد صادر شده از کلاس محمد عزیز ، با کد فیلد key که در روت اصلی ایکسمل هست ، برابر هست یا نه ، اگه بله ، پس سورس اجرا می شه و در صورت عدم سازگاری و تساوی ، سورس اعلام میکنه که ایکسمل سازگار نیست و اجرا نمی شه . این می تونه روشی نسبتا خوب برای محافظت از استفاده دوباره از مولتی مدیایی بشه که قراره برای کسی بنویسین . اگر هم کارفرمای شما اجازه اینو داشته باشه که ایکسمل رو دستکاری کنه ، فایل exe نمایش رمز جدید رو بهش می دین تا کنار ایکسمل قرار بده و بتونه ایکسمل رو عوض کنه . از خوبی های کد واژه که من به این کلاس اضافه کردم اینه که شما ، می تونین برای یه پروژه که مثلا برای 100 نفر قرار هست بفروشین ، 100 کد واژه مختلف رو تعریف میکنین و به نسبت ساختار جدید ایکسمل ها ، 100 جور پسورد مختلف برای 100 مشتری صادر شه ، چرا که این 100 مشتری ایکسمل هاشون در یک ساختار هست و نمی خوان که مشتری شماره 1 به محصولی که مشتری شماره 2 برای خودش درست کرده ، دسترسی ویرایشی داشته باشه . فرض کنین که مشتری شماره 1 ، یه بانک نرم افزاری می خواد ، خوب این مشتری نمی خواد که 99 مشتری دیگه ، بانک نرم افزاری ایشون رو دستکاری کنه ، فرض کنین که کمی سورس ها رو برای هر مشتری عوض کردین ، مثلا ساختار ایکسمل ها رو یه کم بهم ریختین ، در کل می خواهین خروجی پسوورد شما به نسبت کد واژه ای باشه که شما به سورس اصلی می دین ، درکل این روش یه روش خوبی هست تا کنترل همه چیز بیشتر به دست شما باشه ... من کد های این پروژه رو در اینجا قرار ندادم ولی با دانلود این فایل های rar ، می تونین به همه اونها دست پیدا کنین و باید با فلش cs5 باز کنین . توجه کنین که اگر این 100 خروجی رو به 100 مشتری دقیقا با یه ساختار ایکسمل بفروشین ، اونا می تونن از ایکسمل بقیه مشتری ها استفاده کنن و فقط پسوورد رو از فایل exe نمایش پسوورد خودشون در بیارن ولی باید ترتیبی رو ارائه بدین تا ساختار کمی پیچیده تر باشه . در ضمن این کار از این بابت به نفع شماست چرا که هر کدوم از مشتری ها به خاطر عدم دستکاری و سو استفاده محصول اصلی خودشون ، نمی یان تا خروجی exe شما همراه با فایل نمایش پسوورد رو به افراد دیگه هم بفروشن ... در واقع تقریبا می شه گفت برای محصولاتتون ، کد لایسنس بوجود می یارین ... درمثال گفته شده : 1- اگه بعد از ویرایش فردی که اجازه ویرایش رو نداره ، حتی یه حرف از ایکسمل نهایی کم یا زیاد بشه ، پسوورد به هم می ریزه . 2- اگه به فرض محال تعداد حروف ایکسمل ویرایش شده توسط فردی که اجازه ویرایش نداره ، با ایکسمل اصلی یکی باشه ، باید ببینیم که آیا حروفی که ویرایش شده جزو یکی از رشته هایی هست که در حلقه رشته ورودی به این کلاس وارد می شه یا نه ، پس هر چی تعداد بیشتری از کاراکتر های یه ایکسمل رو وارد این کلاس کنیم و دایره ورودی ها رو تنگ تر کنیم تا تعداد بیشتری وارد بشن ، تعداد عملیات کامپیوتری رو بالاتر بردیم ولی شانس دستکاری وموفقیت افراد اهل سو استفاده رو پایین تر بردیم . 3-(*جدید*) این دقیقا ساختاری هست که محمد عزیز زحمتشو کشیده و من هیچ دستی تو کد های ایشون نبردم فقط یه تابع دیگه ای به اسم getKeyHash اضافه شده که فقط یه کد کلید یا KeyWord رو اضافه می گیره و به نسبت اون ، hash و نتیجه اونو عوض می کنه و ساختارش هم بر این اساسه که اون keyWord وارد رشته اصلی می شه و به اول اون اضافه می شه و الباقیش می شه همون سیستم معمول hash MD 5 که آقا محمد ترتیبشو داده . این موارد به درخواست محمد جان انجام شده و خود بنده هم دیگه نخواستم تو این سیستم دستی ببرم. موفق باشید ... Mr. LonelY 17 مهر 1389, 21:32اینجوری نمیشه! باید ی تیریپ رمز نگاری برم!!!:sad: BehrouzPc 17 مهر 1389, 21:50توی XML ها با حجم کمی بالا توی رمز ایجاد شده Key Generator نمونه ای شبیه به OverFlow دیده میشه البته به دلیل این که ادامه و ابتدا این مشکل رو ندارد شاید نشه بهش گفت باگ ولی ، اگه itititititit هم به رشته ای نا منظم تبدیل بشه بهتر می باشد مثلا دو نمونه 3fa 2225227a 2ititititititd 78ea 69e 3c5720662ddaititititititdb 539d 97 در ضمن از هادی عزیز برای این کار تشکر ویژه ای می کنم ، موفق و پیروز باشید :rose: ++Hadi++ 21 مهر 1389, 16:50توی XML ها با حجم کمی بالا توی رمز ایجاد شده Key Generator نمونه ای شبیه به OverFlow دیده میشه البته به دلیل این که ادامه و ابتدا این مشکل رو ندارد شاید نشه بهش گفت باگ ولی ، اگه itititititit هم به رشته ای نا منظم تبدیل بشه بهتر می باشد مثلا دو نمونه 3fa 2225227a 2ititititititd 78ea 69e 3c5720662ddaititititititdb 539d 97 :rose: کلاس آپدیت شد ...در پست 17 ... فکر کنم یه کم مشکلاتش حل شده . چون کاری که قبلا می کردم ، احتمال زیادی رو واسه OverFlow داشته ولی الان کمتر شده ... موفق باشید ... Mohammad_Shams 22 مهر 1389, 21:46سلام چند تا پیشنهاد دارم: 1. این قابلیت را به صورت یک تابع جدید به کلاس اضافه کنید، تا کاربرد قبلی کلاس از بین نرود. 2.در صورت null بودن پارامتر KeyWord تابع جواب نمیدهد که باید اصلاح شود. 3. در صورت null بودن کلید، هش بدست آمده با هش حاصل از نسخه اولیه کلاس یکسان باشد. (به دلیل backward compatiblity) 4. کد بهینه شود. چرا بعضی متغیرها را دوبار تعریف کرده اید (مثلا آرایه) 5. کلاسهایی که آپگرید میشوند، باید به شکلی تغییر کنند که شخصی که از نسخه قبلی آنها استفاده میکرده، بتواند بدون هیچ مشکلی از امکانات نسخه جدید در کنار امکانات قبلی استفاده کند. 6. شیوه وارد کردن کلید به محاسبات هش مشکل دارد زیرا با کلیدهای متفاوت، هش یکسان تولید میکند. مثلا: import com.mshams.MHR2; var e:MHR2 = new MHR2(); trace(e.getHash("mytext", "HadiMetal")); trace(e.getHash("mytext", "HadiMetalHadiMetal")); trace(e.getHash("mytext", "HadiMetalaaaaa")); trace(e.getHash("mytext", "HadiMetalsadgsdfgert")); trace(e.getHash("mytext", "HadiMetal1111111111")); trace(e.getHash("mytext", "HadiMetal2222222222222")); output: 3412d 8ce0951bf83fec9b 8c547a 13be6 3412d 8ce0951bf83fec9b 8c547a 13be6 3412d 8ce0951bf83fec9b 8c547a 13be6 3412d 8ce0951bf83fec9b 8c547a 13be6 3412d 8ce0951bf83fec9b 8c547a 13be6 3412d 8ce0951bf83fec9b 8c547a 13be6 ++Hadi++ 22 مهر 1389, 23:26به چشم ، به زودی ... انشاءال... فقط در مورد قابلیت جدید بهتر نیست خود همون سیستم null بودن keyword رو انجام بدیم ؟؟؟ که دقیقا بشه همون حالت قبل منتها با وجود یه keyword که هر کس خواست ، اونو اعمال کنه ... ببخشین یه کم سرم خیلی شلوغ بود ولی سعی می کنم خیلی بهینه سازی بشه ... یه کم باید بشینم و سیستم اصلی این کلاس رو تحلیل کنم تا به بهترین وجه چیزیو که می خوام درست کنم . خوب یه راهی که به ذهنم به عنوان اولین راه می رسه که حتما می تونه اشتباه باشه اینه که ما keyword رو هم با همون روش hash معمولی به پسوورد تبدیل کنیم و این دو پسوورد 32 کاراکتری رو به نحوی با هم ترکیب کنیم و رشته نهایی از ترکیب این دو بوجود بیاد ، نظر شما چیه ؟؟؟ Mohammad_Shams 23 مهر 1389, 08:05سلام فکر کنم اگر یک تابع جدید مثلا getKeyHash اضافه کنید بهتر باشد. چون ممکن است در آینده بخواهید امکانات و توابع بیشتری به کلاس اضافه کنید که به این شکل شناسایی و تفکیک امکانات جدید ساده تر میشود. در مورد مسئله دوم هم، روشی که گفتید کاملا درست است. بهتر است که اصلا کلید را به محاسبات ریاضی هش وارد نکنید، بلکه با استفاده از آن تغییری در رشته اصلی اعمال کنید. مثلا همین که گفتید از کلید هش بگیریم و آن را به هش رشته الصاق کرده و در نهایت هم از نتیجه آنها یک هش به عنوان خروجی بگیریم. روشهای Salted hash هم به این صورت عمل میکنند. بهتر از همه این است که خیالتان هم از بابت overflow شدن راحت میشود. ++Hadi++ 26 آذر 1389, 11:25سلام کلاس و سمپل ها در پست 17 این تایپیک دقیقا به درخواست محمد جان آپدیت شد .... موفق باشید ... Mohammad_Shams 26 آذر 1389, 14:31سلام دست شما درد نکنه. منتظر امکانات و قابلیتهای جدید از طرف شما هستیم. ++Hadi++ 26 آذر 1389, 17:00والا من یه سری library خارجی پیدا کردم که خیلی کامله و کل سیستم های hash و رمز گذاری رو داره و تقریبا همشون با ByteArray کار می کنن و در همشون ما یه key و یه الگریتم اصلی و رشته مورد نظرمونو در قالب Byte Array به کلاسها پاس می دیم . در کل این library خیلی عالیه و فک کنم اگه با اونا دنبال کنم بهتر باشه، چرا که طراحش ، عمری رو واسه طراحیش گذاشته و همه سیستم ها از جمله Iphon , IPad , Mozilla , MD 2 , MD 5 , ..... رو داره . در ضمن اونا سازگاری خاصی رو با همنوعانشون در C# .net دارند . یعنی دو تا پک هست . یکی واسه C# و یکی واسه as3 ، شاید بهتر باشه کلاس شما رو به سمت استفاده از ByteArray پیش ببریم . ولی اعتراف می کنم کلاس شما واقعا راه دسته و خیلی راحت می شه باهاش کار کرد . موفق باشید . سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 487]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن