PDA

View Full Version : هشینگ اعداد



yazdan
دوشنبه 21 اردیبهشت 1383, 11:02 صبح
اگه کسی الگوریتم خوبی برای کد و دی کد کردن اعداد داره بگونه ای که ورودی و خروجی عدد باشه یه ندایی بده

با تشکر

Sepidar
دوشنبه 21 اردیبهشت 1383, 11:37 صبح
یه کتابی دانشگاه امام حسین (سپاه) منتشر کرده به اسم مبانی رمز نگاری.
شاید به دردتون بخوره.

دوشنبه 21 اردیبهشت 1383, 12:22 عصر
الگوریتم MD5 فکر کنم بهترین باشه!
تو MSN Messenger از اون استفاده میشه!

رضا عربلو
سه شنبه 22 اردیبهشت 1383, 00:40 صبح
تو کتاب ساختمان داده ها یک الگوریتم خیلی خفن است که مبنای آن ÷یا کردن یک عدد اول 100 رقمی یا بیشتر می باشد. البته در کتاب خیلی گنگ در مورد آن صبت شده ست ولی فکر می کنم بتونی در کتاب]ا یا اینترنت مطلبی درموردش پیدا کنی.

Inprise
سه شنبه 22 اردیبهشت 1383, 17:19 عصر
دوست عزیز ،

در ادبیات رمزنگاری ، Hash یک نوع OWF است ( One Way Function ) یعنی ، فارغ از مقداری که وارد تابع عملگر میشه ، خروجی همیشه دارای شرایطی خاص است ، مثلا" خروجی همیشه یک رشتهء 128 بیتی ، بدون توجه به نوع و سایز ورودی . فی المثل الگوریتم متداول MD5 ( که در بخش رمزنگاری در موردش توضیح داده شده ) یک عملگر Hash است و به ازای ورودی ( چه یک A باشد چه یک فایل 100 کیلوبایتی حاوی تصویر ) همیشه یک خروجی ثابت میدهد . از Hash برای بررسی صحت Integrity و اغلب برای تولید Digest و امضای دیجیتال استفاده میشه . اگر دنبال روشی برای تغییر شکلی داده هات هستی که قابل تبدیل به حالت اولیه باشی ( چون خودت نوشتی میخای بتونی کد/دیکد بکنی ) باید روی متدهای رمزنگاری ( Cryptography ) جستجو کنی . اگر مساله خاصی داری که میتونی تعریفش کنی ، ممکنه شرحش بتونه کمک بکنه تا پیشنهادات بهتری بگیری .

موفق باشی

prazvin
یک شنبه 08 اردیبهشت 1387, 09:55 صبح
سلام
خسته نباشید
میدونم که هیچکس جوابم نمی ده ولی من هر چی تاپیک باز می کنم می بندند می گن
تکراری اینطوری ام هیچکس جوابم نمی ده.
راستی منم دنبال یه الگوریتم خیلی سریعی مگردم که بتونه به ازای هر رشته ورودی یک عدد در اختیار من قرار بده.
و یکنواخت باشه.
اگه سراغ دارین به منم بگین وهمینطور در مورد مرتبه اجراییش هم بگین.

prazvin
یک شنبه 08 اردیبهشت 1387, 10:49 صبح
چرا جواب نمی دین
من منتظرم

B-Vedadian
یک شنبه 08 اردیبهشت 1387, 11:15 صبح
دوست عزیز، بجای انتظار همون کلمه MD5 رو جستجو کن. این قدر برنامه آماده به زبانهای مختلف هست که میتونی هرکدومشونو خواستی استفاده کنی.

الگوریتمهای دیگه ای مثل SHA هم هستند.

http://www.xs4all.nl/~gnista/KeePass/src/md5.pas (http://www.xs4all.nl/%7Egnista/KeePass/src/md5.pas)

prazvin
یک شنبه 08 اردیبهشت 1387, 11:35 صبح
سلام دوست عزیز
من با md5 آشنایی دارم ولی آن به درد کارمن نمی خوره
من میخوام یک int خروجی من باشه.
ممنون میشم اگه بتونین کمکم کنین.

B-Vedadian
یک شنبه 08 اردیبهشت 1387, 11:45 صبح
الگوریتم تولید CRC32 میتونه یک checksum به اندازه یک Integer تولید کنه.

اگه امنیت و یکی نبودن checksum دو تا رشته متفاوت خیلی مهم باشه، بهتره که طول checksum رو هم زیاد کنیم. ولی اگه فقط باید Integer باشه همون CRC32 خوبه.

برای مرتبه زمانی هم، محاسبش کار ساده ایه. همه حالتهای کمترین و متوسط و بیشرین زمان با هم یکی هستند (منظورم همان مرتبه زمانیه). بنا بر این یک بررسی ساده اون رو مشخص میکنه.

Valadi
یک شنبه 08 اردیبهشت 1387, 11:51 صبح
شما می تونید از Hash MD5 استفاده کنید در این تکنیک شما هر کاراکتری بدید بصورت 32 کاراکتر در می اورد

prazvin
یک شنبه 08 اردیبهشت 1387, 11:57 صبح
سلام خیلی ممنون
من امنیت و یکی نشدن برام خیلی مهم
یهنی طول checksum بیشتر باشه عیبی نداره و می توان تضمین نمود یا ......
من در حدود 10.000.000 کلمه دارم و می خوام برای هر کدام از آنها مقدار متفاوتی تولید کنه.

B-Vedadian
یک شنبه 08 اردیبهشت 1387, 11:59 صبح
آقای ولدی،

ایشون گفتند 32 بیتی (Integer) نه 32 بایتی. در ضمن MD5 امضای 16 بایتی تولید میکنه نه 32 بایتی.

جناب prazvin

با توجه به اینکه یکی نشدن براتون مهمه از SHA-128 استفاده کنید.

B-Vedadian
یک شنبه 08 اردیبهشت 1387, 12:08 عصر
کافیه از رشته های مورد نظرتون با SHA-128 امضا درست کنید (یک رشته 16 بایتی). احتمال اینکه امضاها یکی دربیان خیلی کمه. حتی کمتر از MD5. برای اینکه این امضا رو تولید کنید از توابع موجود در Crypt32.dll ویندوز استفاده کنید (یا هر کد آماده دیگه ای).

Valadi
یک شنبه 08 اردیبهشت 1387, 16:17 عصر
آقای ولدی،

ایشون گفتند 32 بیتی (Integer) نه 32 بایتی. در ضمن MD5 امضای 16 بایتی تولید میکنه نه 32 بایتی.



جناب B-Vedadian
من خودم از این Md5 استفاده کردم و شما هر چند کارکتر بدید به 32 کارکتر تبدیل می کنی

B-Vedadian
دوشنبه 09 اردیبهشت 1387, 23:32 عصر
جناب ولدي

کتابخانه هاي غير ويندوز، معمولا رشته هگزادسيمال بر مي گردونند که براي 16 بايت ميشه 32 کاراکتر ولي در عمل همون 16 بايته (هر بايت معادل دو رقم هگزادسيماله). علت اينکه MD5 تو Web بصورت هگزا مينويسند، اينه که همه کاراکترهاي ASCII قابل نمايش نيستند.

echoes
سه شنبه 10 اردیبهشت 1387, 14:14 عصر
دوست عزیز، بجای انتظار همون کلمه MD5 رو جستجو کن. این قدر برنامه آماده به زبانهای مختلف هست که میتونی هرکدومشونو خواستی استفاده کنی.

الگوریتمهای دیگه ای مثل SHA هم هستند.

http://www.xs4all.nl/~gnista/KeePass/src/md5.pas (http://www.xs4all.nl/%7Egnista/KeePass/src/md5.pas)

فیلتر شده!!!!