PDA

نسخه کامل مشاهده نسخه کامل : hash در دلفی



M.Hashemi
19-09-2010, 19:20
با سلام
من می خواستم بدونم از چه کامپوننتی برای بدست اوردن hash یک string و یک فایل باید استفاده کنم.
منظورم از hash الگوریتم های مثل md5 و ... است.
خودم این کامپوننتی که در زیر امده را پیدا کردم اما نمیدونم چگونه از ان استفاده کنم(در نصب مشکل ندارم).
مثالی هم که در سایت گذاشته فقط برای hash فایل است نه یک string

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

M.Hashemi
26-09-2010, 14:16
با سلام
کسی جواب این سوال را نمیدونه؟
اگر کسی روش دیگری هم برای hash کردن md5 یا sha1 میدونه لطف کند بگذارد.
با تشکر

TKNC
26-09-2010, 14:40
با سلام ؛
لیست چندی از کامپوننت های جدید دلفی ۲۰۱۰ .

raize component 5.2
[URL=[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]]

TKNC
26-09-2010, 14:46
با سلام مجدد
روش hash کردن md5 یا sha1

شما میتونید از فایل MD5، hash در enusure بعد از اینکه فایلتون انتقال دادید استفاده کنید .


uses IdHashMessageDigest, idHash;


//returns MD5 has for a file
function MD5(const fileName : string) : string;
var
idmd5 : TIdHashMessageDigest5;
fs : TFileStream;
hash : T4x4LongWordRecord;
begin
idmd5 := TIdHashMessageDigest5.Create;
fs := TFileStream.Create(fileName, fmOpenRead OR fmShareDenyWrite) ;
try
result := idmd5.AsHex(idmd5.HashValue(fs)) ;
finally
fs.Free;
idmd5.Free;
end;
end;

مرد مباح
26-09-2010, 14:57
من روش ابتکاری دارم.
یعنی نمیدونم که جز الگوریتمهای استاندارد هستش یا نه.
یکی از ساده ترین کارها اینه که یک عدد 10 رقمی در نظر بگیری برای مثال 1234567890
اونا رو توی آرایه قرار بدی و وقتی فایل رو باز میکنی همه کدهای اسکی رو مطابق عدد متناظرش اضافه یا کم کنی.
اینکه میخوای علامت چی باشه هم میل خودت هستش.
ب
رای فهم بیشتر یک مثال :

حرف 73 توی فایل باید چه تغییری بکنه ؟
چون 10 تا عدد داری بنابراین

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یعنی با آرایه سوم کار داری که در مثال بالا عدد 3 هستش.
کد اسکی اون رو 3 تا کم/زیاد میکنی.

برای باز کردن به حالت عادی نیز دوباره همین کار رو به عکس باید انجام بدی.

موفق باشی.

CPUSatan
26-09-2010, 14:57
این ها احتمال زیاد باید بدردت بخورند.
اگر جواب گرفتی ازشون حتما بگو. خودم تستشون کردم. مثال هم همراهشون هست


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

M.Hashemi
26-09-2010, 17:15
با سلام
از همه دوستان متشکرم.
TKNC عزیز در مورد پست اولتون من متوجه نشدم. تا جایی که من میدونم کامپوننت raize ابزاری برای hash ندارد و در مورد پست دومتون 2 سوال :
1- این فایل hash یا کامپوننت enusure را باید از کجا پیدا کنم.
2- کد شما را در سایت about قبلا پیدا کرده بودم اما این کد تنها hash یک فایل را برمیگرداند. من به hash یک string هم نیاز دارم.
مرد مباح عزیز از تلاشت متشکرم کد بسیار زیبایی نوشتی امااین کد شما encrypt میکند در حالی که من می خواهم عمل hash را انجام بدم.
به 2 دلیل از hash استفاده می کنم:
1- دیگر قابل برگشت نیست(یعنی حتی اگر برنامه شما را یک کرکر حرفه ای هم کرک کند و وارد برنامه هم شود باز هم پسورد اولیه شما را نمی تواند پیدا کند)
2- می توانم از الگوریتم md5 یا sha1 یک check sum برای فایل برنامه درست کنم که کمی کار کرکر را سختتر میکند.
CPUSatan عزیز از وقتی که گذاشتی متشکرم اما من این کامپوننت HashLib را قبلا گرفته بودم اما متوجه نشدم به چه صورت از توابع استفاده کرده.
در فایل که شما گذاشتید یک فایل exe به نام HashTester وجود دارد و من دقیقا همین کا را می خواهم انجام بدم اما وقتی سورس برنامه را باز میکنم و می خواهم دوباره compile کنم error میده. فکر کنم به یک unit نیاز دارد.
اگر لطف کنید و بیشتر در مورد این فایل HashTester و توابعی که در ان استفاده شده توضیح بدی ممنون میشم.
با تشکر

M.Hashemi
26-09-2010, 17:31
با سلام
می خواهم یک الگوریتم encrypt به همه دوستان معرفی کنم.
البته شاید خیلی ها این الگوریتم را بشناسند اما الگوریتم جالبیه.
این الگوریتم دقیقا مثل الگوریتمی است که مرد مباح عزیز معرفی کرد با این تفاوت که به جای تفریق یا جمع کردن یک کد با کد اسکی شما باید ان را xor کنید.
یکی از خواص xor این است که اگر یک عدد را با یک عدد ثابت دیگر دوبار xor کنیم به حالت اول برمیکردد.
برای این که بهتر متوجه شوید به مثال زیر توجه کنید.
اگر کد اسکی به دست امده 73 باشد و بخواهیم ان را با عدد 17 (یا هر عددی که دوست دارید) encrypt کنیم به صورت زیر عمل می کنیم.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدکه حاصل عمل بالا 88 است و حال برای decrypt به صورت زیر عمل می کنیم:

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

*Batman*
27-09-2010, 22:29
سلام.
کامپوننت LockBox انواع الگوریتمهای رمزنگاری رو تو خودش داره.همچنین الگوریتمهای MD5 و SHA1 را هم شامل میشه.
روش برادر عزیز،مرد مباح جالبه.اما برای Hash کردن یا رمزنگاری فقط به این روش بسنده نکنید.
روش ایشون برای پیچیده کردن الگوریتم Hash مناسبه.(Salted Hash)اینطوری میتونید rainbow table ها رو ناکارآمد کنید.
روش SHA1 از MD5 قوی تره.MD5 دیگه امنیت لازم رو نداره.حتی تو چند مورد نتایج Hash های تولید شده از عبارات مختلف، یکسان در اومده!
البته خود SHA1 هم جای خودش رو به SHA256 و SHA512 داده.

دانلود TurboPower LockBox

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدموفق باشید.

M.Hashemi
27-09-2010, 22:59
با سلام
از پاسخ Batman متشکرم.
اما من نتونستم از این کامپوننت استفاده کنم چون این کامپوننت تنها تا دلفی 7 نوشته شده در حالی که من از دلفی 2010 استفاده میکنم.
اگر همین کامپوننت یا کامپوننت دیگری در این مورد دیدید که برای دلفی 2010 هم باشد لطف کنید بگید.
با تشکر

*Batman*
27-09-2010, 23:25
سلام.
شما از لینک زیر کامپوننت رو دانلود کنید.هم سورسش هست هم مثال.مستندات هم داره.با دلفی 2010 هم میتونید ازش استفاده کنید.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

موفق باشید.

M.Hashemi
28-09-2010, 14:09
با سلام
Batman جان ممنونم از این که وقت گذاشتی.
من زیاد با component ها و package ها کار نکردم و وقتی که package های کامپوننت tplockbox را کامپایل میکنم تا نصب کنم کلی error داره.
هر قدر هم با کدها ور رفتم درست نشد.
اکر ممکنه در این مورد توضیح دهید.
با تشکر

*Batman*
28-09-2010, 15:31
سلام.
اینم یه کامپوننت عالی در زمینه رمزنگاری که حاوی 26 الگوریتم Hash و 30 الگوریتم رمزنگاری متقارن هستش.
همچنین از cipher mode های مختلف برای الگوریتمهای متقارن هم پشتیبانی میکنه.
یک مثال ساده ی SHA1 رو با دلفی 2010 براتون کامپایل کردم.

دانلود کامپوننت به همراه مثال:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدموفق باشید.

M.Hashemi
28-09-2010, 18:21
با سلام
از Batman عزیز و تمام دوستانی که برای این موضوع وقت گذاشتند متشکرم.
بسیار کامپوننت جالبی بود.
مشکلم حل شد.
با تشکر