দুটি ফাইলের জন্য একটি অভিন্ন ক্রিপ্টোগ্রাফিক হ্যাশ বা চেকসামের অর্থ কি সেগুলি অভিন্ন?


57

আমার কাছে 2 এক্সেল ডকুমেন্ট রয়েছে এবং আমি ফাইলের নাম বাদে সেগুলি হুবহু একই কিনা তা পরীক্ষা করে দেখতে চাই।

উদাহরণস্বরূপ, ফাইলগুলি কল করা হয় fileone.xlsএবং filetwo.xls। ফাইলের নাম বাদে, তাদের বিষয়বস্তুগুলি অভিন্ন বলে মনে করা হয় তবে আমি এটি যাচাই করতে চাই।

আমি এটি পর্যালোচনা করার উপায়গুলি এবং একগুচ্ছ প্লাগইন ইনস্টল না করে সন্ধান করছি। সোজা সামনের পথ বলে মনে হচ্ছে না।

আমি উভয় ফাইলের জন্য MD5 হ্যাশগুলি উত্পাদন করার চেষ্টা করেছি। হ্যাশগুলি অভিন্ন হলে, এর অর্থ কি ফাইলের সামগ্রী 1: 1 একই হয়?


8
ক্রিপ্টোহেস এবং কখনও কখনও এমনকি সাধারণ হ্যাশগুলি বিভিন্ন সিস্টেমে ফাইলগুলির তুলনা করতে, বা প্রচুর সংখ্যক ফাইলের মধ্যে অনুসন্ধানের জন্য কার্যকর হতে পারে তবে দুটি ফাইল একই সিস্টেমে থাকলে আপনি উইন্ডোজের cmpইউনিক্স বা fc(ফাইলের তুলনা) সাথে সহজেই তুলনা করতে পারবেন ।
dave_thompson_085

10
shattered.io - SHA1 এমডি 5 এর চেয়ে একটি "শক্তিশালী" হ্যাশিং অ্যালগরিদম এবং এখনও shattered.io/static/shattered-1.pdf এবং shattered.io/static/shattered-2.pdf সম্পূর্ণ ভিন্ন হওয়ার সময় একই হ্যাশ মান রয়েছে।
স্টাইরোফোম ফ্লাই

30
পার্শ্ব দ্রষ্টব্য: প্রথমে তাদের আকারগুলি পরীক্ষা করুন। তাদের আকার যদি আলাদা হয় তবে ফাইলগুলি খোলার উদ্বিগ্ন হবেন না, তারা আলাদা।
এমিলিও এম বুমাচর

42
সরল সংস্করণ: একটি MD5 হ্যাশ দুর্ঘটনার হাত থেকে রক্ষা করার জন্য যথেষ্ট ভাল , এটি আবার দূষিত হওয়া রোধ করার পক্ষে যথেষ্ট ভাল নয় । এটি আপনার পক্ষে যথেষ্ট ভাল কিনা, আপনার পরিস্থিতির উপর ভিত্তি করে আপনাকে সিদ্ধান্ত নিতে হবে।
ইউরো মিশেল্লি

9
diff -s file1 file2যদি এটি বলে যে তারা অভিন্ন, তারা অভিন্ন (এটি আসলে বাইট-প্রতি-বাইট ফাইলগুলির তুলনা করে এমনকি হ্যাশের সংঘর্ষগুলিও বাদ দেওয়া হয়)। যখন আপনার কাছে কেবল একটি হ্যাশ এবং একটি আইটেম থাকে যা সেই হ্যাশের প্রবর্তকের সাথে অভিন্ন বলে মনে করা হয় তখন চেকসামগুলি ব্যবহার করা হয়।
বাকুরিউ

উত্তর:


93

হ্যাশগুলি অভিন্ন হলে, এর অর্থ কি ফাইলের সামগ্রী 1: 1 একই হয়?

সমস্ত ফাইলগুলি বাইটের সংগ্রহ (মান 0-255)। যদি দুটি ফাইলের এমডি 5 হ্যাশ মিলে যায় তবে এই দুটি বাইট সংগ্রহই সম্ভবত খুব একই রকম (একই ক্রম, একই মান)।

খুব ছোট সম্ভাবনা রয়েছে যে দুটি ফাইল একই এমডি 5 তৈরি করতে পারে যা একটি 128 বিট হ্যাশ। সম্ভাবনা হ'ল:

দুর্ঘটনাক্রমে সংঘর্ষের মাত্র দুটি হ্যাশ হওয়ার সম্ভাবনা 1/2 128 যা 340 অনিকিলিয়ন 282 ডিলিয়ন 366 ননলিওন 920 অক্টিলিয়ন 938 সেপটিলিয়ন 463 সেক্সটিলিয়ন 463 কুইন্টিলিয়ন 374 কোয়াড্রিলিয়ন 607 ট্রিলিয়ন 431 বিলিয়ন 768 মিলিয়ন 211 হাজার 456. ( স্ট্যাক ওভারফ্লোয়ের একটি উত্তর থেকে ) 1

হ্যাশগুলি বোঝানো হয় "কেবল এক দিক" এ কাজ করা - অর্থাত্ আপনি বাইট সংগ্রহ এবং একটি হ্যাশ পান তবে আপনি একটি হ্যাশ নিতে পারবেন না এবং বাইটগুলির সংগ্রহ ফিরে পেতে পারবেন না।

ক্রিপ্টোগ্রাফি এটির উপর নির্ভর করে (what জিনিসগুলি কী তা না জেনে এটি দুটি উপায়ের সাথে তুলনা করা যায়))

২০০৫ সালের দিকে, এমডি 5 হ্যাশ নিতে এবং ডেটা তৈরির জন্য পদ্ধতিগুলি আবিষ্কার করা হয়েছিল যা হ্যাশের সাথে মিলে যে দুটি এমডি 5 হ্যাশ ( সংঘর্ষের আক্রমণ ) রয়েছে এমন দুটি নথি তৈরি করে । নীচে @ ব্যবহারকারী 2357112 এর মন্তব্য দেখুন। এর অর্থ একটি আক্রমণকারী দু'জন এক্সিকিউটেবল তৈরি করতে পারে, উদাহরণস্বরূপ, এর একই এমডি 5 রয়েছে এবং কোনটি নির্ভর করতে হবে তা নির্ধারণ করার জন্য আপনি যদি এমডি 5 এর উপর নির্ভর করে থাকেন তবে আপনাকে বোকা বানানো হবে।

সুতরাং এমডি 5 ক্রিপ্টোগ্রাফি বা সুরক্ষার জন্য ব্যবহার করা উচিত নয়। ডাউনলোডের অখণ্ডতা নিশ্চিত করার জন্য একটি এমডি 5 প্রকাশের জন্য কোনও সাইটে ডাউনলোড করা খারাপ। একটি MD5 হ্যাশের উপর নির্ভর করে আপনি ফাইল বা ডেটা বিষয়বস্তু যাচাই করতে নিজের তৈরি করেননি যা আপনি এড়াতে চান।

আপনি যদি নিজের তৈরি করেন তবে আপনি জানেন যে আপনি নিজের কাছে দূষিত হচ্ছেন না (আশা করি)। সুতরাং আপনার ব্যবহারের জন্য, এটি ঠিক আছে, তবে আপনি যদি চান যে অন্য কেউ পুনরুত্পাদন করতে সক্ষম হন এবং আপনি এমডি 5 হ্যাশ প্রকাশ্যে প্রকাশ করতে চান তবে আরও ভাল হ্যাশ ব্যবহার করা উচিত।


মনে রাখবেন যে দুটি এক্সেল ফাইলের জন্য একই সারি এবং কলামগুলিতে একই মান থাকতে পারে তবে বিভিন্ন ফর্ম্যাটিং, শৈলী, সেটিংস ইত্যাদির কারণে ফাইলটির বাইস্ট্রিমে সম্পূর্ণ আলাদা হওয়া সম্ভব Note

আপনি যদি ফাইলটিতে ডেটা তুলনা করতে চান, তবে সমস্ত ফরম্যাটিংটি বের করে আনার জন্য প্রথমে একই সারি এবং কলামগুলির সাথে সিএসভিতে রফতানি করুন, এবং তারপরে হ্যাশ বা সিএসভি'র তুলনা করুন।


107
এক্সেল ফাইল এবং অন্যান্য অফিসের নথিগুলিতেও আলাদা আলাদা হ্যাশ থাকতে পারে কারণ শেষ রক্ষিত তারিখের জন্য ফাইলটিতে থাকা একটি নতুন মান থাকার কারণে ফাইলটিতে থাকা মেটাডেটার কারণে কোনও কিছুই পরিবর্তন না করেই এগুলি খোলা হয়েছে এবং পুনরায় সেভ করা হয়েছে।
বিউভুলফনড 42

29
বোনাস: আপনি যদি সিএসভিতে রফতানি করে থাকেন তবে আপনি diffকেবল একই হ্যাশ না করে ফাইলগুলি বাইট-বাই বাইট অভিন্ন কিনা তা নিশ্চিত করার জন্য আপনি ব্যবহারযোগ্য বা অনুরূপ ইউটিলিটি ব্যবহার করতে পারেন ।
মন্টি হার্ড

18
একটি হ্যাশ নেওয়া এবং হ্যাশের সাথে মেলে এমন ডেটা তৈরি করা প্রিমাইজ আক্রমণ। আমি বিশ্বাস করি যে এমডি 5 বর্তমানে সংঘর্ষের আক্রমণে ঝুঁকিপূর্ণ, তবে আমি মনে করি না প্রিমাইজ বা সেকেন্ড-প্রিমাইজ আক্রমণগুলি বর্তমানে কার্যকর হবে।
ব্যবহারকারী 2357112

2
@ টিম আপনি কি বলছেন? তিনি বলেছিলেন: এগুলি সিএসভিতে রফতানি করুন এবং সিএসভি diff -sঅভিন্ন কিনা তা পরীক্ষা করতে ব্যবহার করুন। আসলে আপনি diff -sএমনকি এক্সেল ফাইলগুলিও করতে পারেন : যদি diffসেগুলি অভিন্ন হয় তবে আপনাকে সিএসভি তুলনা করতে হবে না।
Bakuriu

2
@ বাকুরিউ স্পষ্টতই আমার মন্তব্যটি খুব খারাপভাবে বলা হয়েছিল - আমার অর্থ সিএসভিতে রফতানি করা প্রচুর তথ্য হারাবে - উল্লেখযোগ্য সূত্র, চার্ট, শর্তসাপেক্ষ এবং মানক বিন্যাস।
টিম

37

অনুশীলনে, হ্যাঁ, একটি অভিন্ন ক্রিপ্টোগ্রাফিক হ্যাশ মানে যতক্ষণ ফাইল আক্রমণকারী বা অন্য দূষিত সত্তা দ্বারা ফাইল তৈরি করা হয়নি ততক্ষণ ফাইলগুলি একই । মতভেদ র্যান্ডম কোনো সুন্দরভাবে-ডিজাইন করা ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন সঙ্গে collisions যেমন বাস্তবে একটি সক্রিয় আক্রমণকারী অনুপস্থিতিতে তুচ্ছ হতে হবে যাতে ছোট।

সাধারণভাবে, তবে, না, আমরা বলতে পারি না যে একই রকম হ্যাশযুক্ত দুটি স্বেচ্ছাসেবক ফাইলের অবশ্যই অর্থ হল এটি অভিন্ন।

ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশনটি যেভাবে কাজ করে তা হ'ল একটি স্বেচ্ছাকৃতির দৈর্ঘ্যের ইনপুট নেওয়া এবং ইনপুট থেকে নির্ধারিত একটি নির্দিষ্ট দৈর্ঘ্যের মান আউটপুট। কিছু হ্যাশ ফাংশনগুলির মধ্যে থেকে বেছে নিতে একাধিক আউটপুট দৈর্ঘ্য থাকে তবে আউটপুট এখনও নির্দিষ্ট-দৈর্ঘ্যের মান থেকে কিছুটা অবধি থাকে। এই মান কয়েক ডজন বাইট দীর্ঘ হবে; আজ সাধারণ ব্যবহারে দীর্ঘতম আউটপুট মান সহ হ্যাশ অ্যালগরিদমের একটি 512-বিট আউটপুট রয়েছে এবং 512-বিট আউটপুট 64 বাইট রয়েছে।

যদি হ্যাশ ফাংশনের ইনপুট হ্যাশ ফাংশনের আউটপুটের চেয়ে দীর্ঘ হয় তবে আউটপুটটিকে ইনপুট ফিট করার জন্য কিছু বিশ্বস্ততা মুছে ফেলতে হবে। ফলস্বরূপ, আউটপুট দৈর্ঘ্যের চেয়ে বেশি দৈর্ঘ্যের একাধিক ইনপুট থাকতে হবে, যা একই আউটপুট উত্পন্ন করে।

উদাহরণস্বরূপ চলুন বর্তমান ওয়ার্কহর্স, SHA-256 নেওয়া যাক। এটি 256 বিট বা 32 বাইটের একটি হ্যাশ দেয়। যদি আপনার কাছে দুটি ফাইল থাকে যা প্রতিটি হ'ল 32 বাইট দীর্ঘ, তবে পৃথক, এগুলি (অ্যালগোরিদমে কোনও ত্রুটি অনুমান করে) বিভিন্ন মানগুলিতে হ্যাশ করা উচিত, ফাইলগুলির বিষয়বস্তু বিবেচনা না করে; গাণিতিক ভাষায়, হ্যাশ এমন একটি ফাংশন যা 2 256 ইনপুট স্পেসকে 2 256 আউটপুট স্পেসে ম্যাপ করে যা সংঘর্ষ ছাড়াই সম্ভব হওয়া উচিত। তবে, আপনার কাছে যদি দুটি 33 টি বাইট দীর্ঘ দুটি ফাইল থাকে তবে উভয় ফাইলের জন্য একই 32-বাইট আউটপুট হ্যাশ মান দেয় এমন কিছু ইনপুট অবশ্যই উপস্থিত থাকতে পারে , কারণ আমরা এখন 2 256 এ 2 264 ইনপুট স্পেস ম্যাপ করছি becauseআউটপুট স্পেস; এখানে আমরা সহজেই দেখতে পাচ্ছি যে প্রতি একক আউটপুটের জন্য গড়ে 2 8 ইনপুট থাকা উচিত । এটি আরও নিন এবং 64-বাইট ফাইলের সাথে প্রতিটি একক আউটপুটের জন্য 2 256 ইনপুট থাকতে হবে !

ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশনগুলি এমনভাবে ডিজাইন করা হয়েছে যে কোনও নির্দিষ্ট আউটপুট দেয় এমন একটি ইনপুট রচনা করা বা একই আউটপুট দেয় এমন দুটি ইনপুট রচনা করা গণনা করা শক্ত difficult এটি প্রিমেজ আক্রমণ প্রতিরোধ বা সংঘর্ষের আক্রমণ প্রতিরোধ হিসাবে পরিচিত । এই সংঘর্ষগুলি খুঁজে পাওয়া অসম্ভব নয় ; এটি কেবল সত্যই, সত্যই, সত্যই, সত্যই শক্ত হওয়ার ইচ্ছা intended (সংঘর্ষের আক্রমণটির একটি বিশেষ ঘটনা জন্মদিনের আক্রমণ

কিছু অ্যালগরিদম আক্রমণকারীদের প্রতিরোধে অন্যের চেয়ে ভাল। এমডি 5 সাধারণত এই দিনগুলিকে সম্পূর্ণরূপে ভাঙ্গা হিসাবে বিবেচনা করা হয়, তবে শেষ পর্যন্ত আমি দেখেছিলাম, এটি এখনও বেশ ভাল প্রথম প্রিমেজ প্রতিরোধের স্পোর্ট করেছে । এসএএএ -১ একইভাবে কার্যকরভাবে ভেঙে গেছে; প্রাক হামলাগুলি প্রদর্শিত হয়েছে, তবে নির্দিষ্ট শর্ত প্রয়োজন, যদিও অনির্দিষ্টকালের জন্য এমনটি হবে তা বিশ্বাস করার কোনও কারণ নেই; প্রবাদটি যেমন রয়েছে, আক্রমণগুলি সর্বদা উন্নত হয়, তারা কখনই খারাপ হয় না। SHA-256/384/512 বর্তমানে বেশিরভাগ কারণে এখনও নিরাপদ বলে বিশ্বাস করা হচ্ছে। তবে , আপনি যদি কেবল দু'জন দূষিত-কারুকার্যযুক্ত, বৈধ কিনা তা দেখতে আগ্রহী হনফাইলগুলি সমান, তবে এর যে কোনও একটিই পর্যাপ্ত হতে হবে, কারণ ইনপুট স্পেসটি ইতিমধ্যে যথেষ্ট পরিমাণে সীমাবদ্ধ যে আপনি বেশিরভাগ এলোমেলো সংঘর্ষে আগ্রহী হবেন। আপনার যদি বিশ্বাস করার কোনও কারণ থাকে যে ফাইলগুলি দূষিতভাবে তৈরি করা হয়েছিল, তবে আপনার খুব কমপক্ষে একটি ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন ব্যবহার করা উচিত যা বর্তমানে নিরাপদ বলে মনে করা হচ্ছে, যা SHA-256 এ নীচের বারটি রাখে।

প্রথম প্রাইমেজটি এমন একটি ইনপুট সন্ধান করা যা একটি নির্দিষ্ট আউটপুট হ্যাশ মান দেয়; দ্বিতীয় প্রাইমেজ হ'ল একটি ইনপুট যা অন্যটিকে একই ইনপুট দেয়, নির্দিষ্ট ইনপুট দেয়; সংঘর্ষটি হ'ল দুটি ইনপুটগুলি যা একই আউটপুট দেয় তা কখনও বিবেচনা না করে এবং ইনপুটগুলি কী তা বিবেচনা না করে একই ফলাফল দেয় yield

যা যা বলেছিল, এগুলি মনে রাখা গুরুত্বপূর্ণ যে ফাইলগুলির খুব আলাদা উপাত্ত উপস্থাপনা থাকতে পারে এবং এখনও ঠিক একই প্রদর্শিত হয়। সুতরাং তাদের ক্রিপ্টোগ্রাফিক হ্যাশগুলি মেলে না তবুও তারা একই হিসাবে উপস্থিত হতে পারে তবে হ্যাশগুলি মিলে গেলে সেগুলির উপস্থিতি দেখা দেওয়ার সম্ভাবনা খুব বেশি


2
যদি হ্যাশগুলি মিলে যায় তবে ফাইলগুলি ইচ্ছাকৃত সংঘর্ষের ফলস্বরূপ, বা সেগুলি হয় না এবং তারপরে সেগুলি একই হওয়ার গ্যারান্টিযুক্ত । দুর্ঘটনাক্রমে সংঘর্ষের সম্ভাবনা খাঁটি তাত্ত্বিক। এই বলে যে "যদি হ্যাশগুলি মিলে যায় তবে তারা সম্ভবত একইরকম দেখা দেয়" বিভ্রান্তিকর: যদি সেখানে দূষিততা দেখা দেয় এবং এটির সংঘর্ষের পরিস্থিতি থাকে তবে তারা একইরকম হওয়ার সম্ভাবনা থাকে না এবং অন্যথায় সম্ভাবনা কার্যকরভাবে শূন্য হয়, এটি আইসন নয় কিছু কম সম্ভাবনার ঘটনা যা আপনার বিরুদ্ধে রক্ষা করা দরকার t
গিলস

9
@ গিলস: বিপরীতে। মাইকেল এর শব্দবন্ধটি ঠিক সঠিক, এবং "গ্যারান্টিযুক্ত" বিভ্রান্তিকর (বা, ভাল, সত্যই ভুল)। অভিন্ন হ্যাশগুলির সাথে মেলে না এমন দুটি ফাইলের সম্ভাবনা (দূষিত পরিবর্তন সত্ত্বেও) অত্যন্ত কম, এবং অনুশীলনে অবহেলিত হতে পারে। এটি অবশ্য শূন্য নয় । সেখানে সাধারণত একটা সুযোগ যে কারনেই হোক বিভিন্ন ইনপুট হবে এমনকি একটি সম্ভাবনা সঙ্গে সম্ভবত একই হ্যাশ উত্পাদন, এবং আরো অনেক বেশী 2 ^ -128 (ক্রিপ্টোগ্রাফিক আলগোরিদিম কালো শিল্প, algortihm সূক্ষ্ম, অজানা ভাবে ত্রুটিপূর্ণ হতে পারে এবং আমাদের কাছে 100% নিশ্চিত হওয়ার কোনও উপায় নেই)।
ড্যামন

5
@ গিলস " কার্যকরভাবে শূন্য " এখনও শূন্য নয় , যার অর্থ এখনও কিছু ( স্বীকৃতভাবে ছোট) সম্ভাবনা রয়েছে যে দুটি পৃথক ডেটা একই হ্যাশের ফলস্বরূপ ঘটবে। আপনি এর বিরুদ্ধে তর্ক করতে পারবেন না।
এট্টি

5
@ অ্যাটি: একই সাথে দুটি সম্পর্কযুক্ত ফাইলের সম্ভাবনা হ'ল অন্য অনেক কিছুর ভুল হতে পারে (যেমন, ডিস্কে র্যান্ডম বিট ত্রুটিযুক্ত ফাইলগুলি) সম্ভাবনার তুলনায় এটি কাকতালীয় ম্যাচের বিরুদ্ধে রক্ষা করার মতো নয়। ইচ্ছাকৃত ইঞ্জিনিয়ারড ম্যাচগুলির বিরুদ্ধে গার্ডিং সার্থক হতে পারে তবে দুর্ঘটনাজনক ম্যাচগুলি এতটা অসম্ভব যে তাদের বিরুদ্ধে রক্ষণে যে কোনও প্রচেষ্টা ব্যয় করা অন্য কোনও জায়গায় সম্ভবত ব্যয় করা যেতে পারে।
সুপারক্যাট

3
@ গিলস ভুল আপনি এক নিঃশ্বাসে আমাকে বলতে পারবেন না যে একটি সুযোগ আছে, তবে ছোট আপনি এটি নির্ধারণ করেন যে দুর্ঘটনাক্রমে সংঘর্ষ ঘটতে পারে পরের গ্রান্টিতে কোনও সংঘর্ষ ঘটতে পারে না। এটি হ'ল অত্যন্ত বিভ্রান্তিকর কারণ এটি হ্যাশিং অ্যালগরিদমের একটি সম্পত্তি বোঝায় যা ইতিমধ্যে সম্পূর্ণ মিথ্যা বলে পরিচিত known
iheanyi

10

এটি একটি সম্ভাবনার খেলা ... হ্যাশগুলি একটি সীমাবদ্ধ সংখ্যার মান উপস্থাপন করতে সক্ষম।

যদি আমরা একটি অনুমান (এবং খুব দুর্বল) 8-বিট হ্যাশিং অ্যালগরিদম বিবেচনা করি, তবে এটি 256 স্বতন্ত্র মানগুলিকে উপস্থাপন করতে পারে। আপনি অ্যালগরিদমের মাধ্যমে ফাইল চালানো শুরু করার সাথে সাথে আপনি হ্যাশগুলি আউট করা শুরু করবেন ... তবে খুব শীঘ্রই আপনি " হ্যাশের সংঘর্ষ " দেখতে শুরু করবেন । এর অর্থ হল দুটি পৃথক ফাইলকে অ্যালগরিদমে খাওয়ানো হয়েছিল এবং এটি তার আউটপুট হিসাবে একই হ্যাশ মান তৈরি করেছিল । এখানে স্পষ্টতই, হ্যাশ যথেষ্ট শক্তিশালী নয় এবং আমরা জোর দিয়ে বলতে পারি না যে " ম্যাচের সাথে হ্যাশযুক্ত ফাইলগুলির একই বিষয়বস্তু রয়েছে "।

হ্যাশের আকার বাড়ানো এবং শক্তিশালী ক্রিপ্টোগ্রাফিক হ্যাশিং অ্যালগরিদমগুলি সংঘাতগুলি হ্রাস করতে উল্লেখযোগ্যভাবে সহায়তা করতে পারে এবং আমাদের আত্মবিশ্বাস বাড়িয়ে তুলতে পারে যে একই হ্যাশযুক্ত দুটি ফাইলের একই বিষয়বস্তু রয়েছে।

এটি বলেছে, আমরা কখনই 100% নিশ্চিততায় পৌঁছাতে পারি না - আমরা কখনই নিশ্চিত করতে পারি না যে একই হ্যাশযুক্ত দুটি ফাইলের সত্যই একই সামগ্রী রয়েছে।

বেশিরভাগ / অনেক পরিস্থিতিতে এটি ঠিক আছে, এবং হ্যাশগুলির তুলনা করা " যথেষ্ট ভাল " তবে এটি আপনার হুমকির মডেলের উপর নির্ভর করে।

শেষ পর্যন্ত, আপনার যদি নিশ্চিততার স্তর বাড়ানোর দরকার হয় তবে আমি আপনাকে সুপারিশ করব যে আপনি নিম্নলিখিতগুলি করুন:

  1. শক্তিশালী হ্যাশিং অ্যালগরিদম ব্যবহার করুন ( আপনার যদি সম্ভাব্য দূষিত ব্যবহারকারীদের থেকে রক্ষা করার প্রয়োজন হয় তবে MD5 আর পর্যাপ্ত বিবেচিত হবে না)
  2. একাধিক হ্যাশিং অ্যালগরিদম ব্যবহার করুন
  3. ফাইলগুলির আকারের সাথে তুলনা করুন - একটি অতিরিক্ত ডেটা পয়েন্ট সম্ভাব্য সংঘর্ষগুলি সনাক্ত করতে সহায়তা করতে পারে তবে নোট করুন যে প্রদর্শিত MD5 সংঘর্ষের ফলে ডেটার দৈর্ঘ্য পরিবর্তন করার প্রয়োজন হয়নি।

আপনার যদি 100% নিশ্চিত হওয়ার দরকার হয় তবে সর্বদা একটি হ্যাশ দিয়ে শুরু করুন, তবে যদি হ্যাশগুলি মিলে যায় তবে দুটি ফাইলের সাথে বাইট-বাই বাইট তুলনা করে এটি অনুসরণ করুন।


অতিরিক্ত হিসাবে, অন্যদের দ্বারা নির্দেশিত হিসাবে ... ওয়ার্ড এবং এক্সেলের মতো অ্যাপ্লিকেশনগুলির দ্বারা উত্পাদিত নথিগুলির জটিলতার অর্থ পাঠ্য, সংখ্যা, দৃশ্যমান বিন্যাস একই হতে পারে তবে ফাইলটিতে সঞ্চিত ডেটা আলাদা হতে পারে।

এক্সেল এটিতে বিশেষত খারাপ - কেবল একটি স্প্রেডশিট খোলার মাধ্যমে এটি সংরক্ষণ করা ( কিছুই না করে ) বিভিন্ন সামগ্রী সহ একটি নতুন ফাইল তৈরি করতে পারে।


6
এমডি 5 কে আর পর্যাপ্ত বিবেচনা করা হয় না ক্রিপ্টোগ্রাফিকভাবে তবে স্বতন্ত্রতা যাচাইয়ের জন্য (দুষ্প্রাপ্যের অনুপস্থিতিতে, যেমন আপনি যদি ইনপুটটি নিয়ন্ত্রণ করেন) এটি দুর্দান্ত এবং দ্রুত (এবং 128 বিট প্রচুর পরিমাণে হওয়া উচিত)
ক্রিস এইচ

4
" দুটি ফাইলের সাথে বাই-বাই-বাইট তুলনা করে এটি অনুসরণ করুন " "আপনি যদি কোনও ফাইল-তুলনা করতে চলেছেন, তবে আপনি প্রথমে এটিও করতে পারেন ... প্রতিটি ফাইলের সমস্ত গণনা করার জন্য কোনও পয়েন্ট পড়বে না উভয় ফাইলের তুলনা করতে কেবল হ্যাশগুলি পুনরায় পড়তে হবে!
ট্রিপহাউন্ড

3
@ ট্রাইপহাউন্ড এটি নির্ভর করে যদি ফাইলগুলি উভয় স্থানীয় হয় বা না হয় ... আপনার যদি ইতিমধ্যে একটির একটি হ্যাশ থাকে এবং সিস্টেমে একটি নতুন ফাইল প্রবর্তন করা হয়, যদি নতুন ফাইলটিকে কোনও ডাটাবেজে সংরক্ষণ করা হ্যাশ দরকার হয়, ইত্যাদি ... এমন কল করুন যা আপনার পরিস্থিতির জন্য উপযুক্ত।
Attié

5
না, এটি কোনও সম্ভাবনার খেলা নয়। আপনি দুর্ঘটনাক্রমে সংঘর্ষের সম্ভাবনা কতটা অসম্পূর্ণ বলে দিচ্ছেন। এটা ঠিক হবে না। তুলনার সময় কিছুটা উল্টে যাওয়ার সম্ভাবনা বেশি। অন্যদিকে, কিছু পরিস্থিতিতে, একটি ইচ্ছাকৃত সংঘর্ষ ঘটতে পারে এবং এটি মোটেই সম্ভাবনার খেলা নয়।
গিলস

3
@ এমবিগ্রি: একটি 32-বিট হ্যাশের দুর্ঘটনাক্রমে অমিলের একটি উল্লেখযোগ্য ঝুঁকি থাকবে। যাইহোক, 128 বা 256 বিটগুলিতে যাওয়া একটি বিশাল পার্থক্য করে। 128 বিটের সাহায্যে, প্রতিটি বিলিয়ন বানর প্রতিটি বিলিয়ন শালীন আকারের প্রকৃত-এলোমেলো নথির টাইপ করে একই হ্যাশ দিয়ে দুটি ডকুমেন্ট তৈরি করার প্রায় 0.3% সম্ভাবনা রাখে। ২৫6 বিটের সাহায্যে, এমনকি যদি কয়েক বিলিয়ন বানর এক বিলিয়ন বছরের জন্য প্রতি সেকেন্ডে এক বিলিয়ন শালীন আকারের এলোমেলো নথি টাইপ করতে পারে, তবে কাকতালীয়ভাবে মিলে যাওয়া হ্যাশ মানগুলির সাথে এই মিলিয়ন মিলিয়ন ডকুমেন্টগুলির যে কোনও সম্ভাবনা খুব কম হবে।
সুপারক্যাট

6

যদি দুটি ফাইলের এমডি 5 হ্যাশ থাকে এবং সেগুলি উভয়ই বিশেষভাবে তৈরি করা হয় নি তবে তারা অভিন্ন। একই এমডি 5 হ্যাশ সহ ফাইলগুলি কারুকর্ম করা কতটা শক্ত তা ফাইলের ফর্ম্যাটের উপর নির্ভর করে, এক্সেল ফাইলগুলির সাথে এটি কতটা সহজ তা আমি জানি না।

সুতরাং আপনার যদি নিজের নিজস্ব ফাইল রয়েছে যা কেবলমাত্র পড়ে আছে এবং নকলগুলি সন্ধান করতে চান, MD5 নিরাপদ। যদি আপনি একটি ফাইল লিখে থাকেন এবং অন্য ফাইলটি সন্দেহজনক উত্সের হয় তবে এমডি 5 এখনও নিরাপদ (একই এমডি 5 চেকসামের সাহায্যে বিভিন্ন ফাইল পাওয়ার একমাত্র উপায় হ'ল উভয় ফাইল ক্রাফ্ট করা)। যদি আপনি বিশ্বাস করেন না এমন কেউ যদি আপনাকে একটি বাজেট প্রস্তাব প্রেরণ করে এবং পরে তারা অন্য একটি ফাইল প্রেরণ করে যা তারা দাবি করে তবে এটি এমডি 5 পর্যাপ্ত নাও হতে পারে।

কোনও ঝুঁকি এড়াতে, MD5 এর পরিবর্তে SHA-256 বা SHA-512 ব্যবহার করুন। যদি দুটি ফাইলের একই SHA-256 হ্যাশ থাকে তবে সেগুলি অভিন্ন। একই SHA-512 এর জন্য যায়। (তাত্ত্বিক সম্ভাবনা রয়েছে যে এগুলি পৃথক হতে পারে, তবে ঘটনাক্রমে ঘটনার সম্ভাবনা আপনার কম্পিউটারের যাচাইকরণের সময় কিছুটা উল্টে যাওয়ার সম্ভাবনার তুলনায় খুব কম তবে এটি প্রাসঙ্গিক নয় As কারও জন্য ইচ্ছাকৃতভাবে দুটি ফাইল কারুকার্ট করা হচ্ছে একই হ্যাশ, SHA-256 বা SHA-512 এর জন্য কীভাবে করা যায় তা কেউ জানে না))

দুটি এক্সেলের ফাইলের যদি পৃথক হ্যাশ থাকে তবে সেগুলি আলাদা but তবে তারা কতটা আলাদা তা জানার উপায় নেই। তাদের অভিন্ন ডেটা থাকতে পারে তবে বিভিন্ন ফরম্যাটিং থাকতে পারে, বা তারা বৈশিষ্ট্যগুলিতে আলাদা হতে পারে বা তারা বিভিন্ন সংস্করণে সংরক্ষণ করতে পারে। আসলে এক্সেল যদি ওয়ার্ডের মতো কিছু হয় তবে কেবল কোনও ফাইল সংরক্ষণ করে তার মেটাডেটা আপডেট করে। যদি আপনি কেবল সংখ্যাসূচক এবং পাঠ্য ডেটার তুলনা করতে চান এবং ফর্ম্যাটিং এবং বৈশিষ্ট্যগুলি উপেক্ষা করেন তবে আপনি স্প্রেডশিটগুলি সিএসভিতে তুলনা করতে রফতানি করতে পারেন।

আপনার যদি ইউনিক্স / লিনাক্স সরঞ্জাম উপলব্ধ থাকে তবে আপনি cmpদুটি ফাইলের তুলনা করতে ব্যবহার করতে পারেন । একই মেশিনে দুটি ফাইলের তুলনা করতে, চেকসামগুলি কেবল জিনিসগুলিকে আরও জটিল করে তোলে।


যদি দুটি ফাইলের এমডি 5 হ্যাশ থাকে এবং সেগুলি উভয়ই বিশেষভাবে তৈরি করা হয় নি তবে তারা অভিন্ন। এটা ভুল। সম্ভাব্য বার্তাগুলির অসীমতা রয়েছে তবে এখনও কেবল 2 ^ 64 টি সম্ভব 64৪-বিট হ্যাশ রয়েছে। একে "পায়রাহোল নীতি" বলা হয় : "কবুতরের নীতিতে বলা হয়েছে যে nআইটেমগুলি যদি mপাত্রে রাখে n > mতবে, কমপক্ষে একটি ধারককে অবশ্যই একাধিক আইটেম থাকতে হবে।" আপনি যদি 2 ^ 64 টিরও বেশি বার্তা তৈরি করেন তবে কোনও "বিশেষ কারুকাজ" ছাড়াই আপনার সংঘর্ষ হবে। এবং আপনি কেবল 2 দিয়ে থাকতে পারেন
অ্যান্ড্রু হেনেল

@ অ্যান্ড্রুহেনেল, এমডি 5 এটি 64 টি বিট নয়, এটি 128 টি an
চার্লস ডাফি 21

@ চার্লসডুফি আপনি ধরে নিচ্ছেন যে হ্যাশ এলোমেলোভাবে বিতরণ করা হয়েছে। এটা না।
অ্যান্ড্রু হেনেল 26'18

কার্যকরভাবে এলোমেলো বিতরণের সমতুল্য হওয়াই একটি ভাল ক্রিপ্টোগ্রাফিক হ্যাশ গঠনের সংজ্ঞাটির অংশ - আপনার কোনও কারণের জন্য প্রচুর পরিমাণে মেশানো রয়েছে। অবশ্যই, দুর্বল হ্যাশ অ্যালগরিদম রয়েছে, তবে সেই দুর্বলতাগুলিতে মনোনিবেশ করা আমাদের ইচ্ছাকৃত আক্রমণগুলির পূর্বে পূর্ব-বর্ণিত সতর্কবাণীগুলিতে নিয়ে যায়। (বা আপনি কি বলছেন যে এমডি 5 তে কেবলমাত্র 64 টি বিট কার্যকরভাবে এলোমেলোভাবে দেখানো হয়েছে? আমি স্বীকার করব যে আমি রাখছি না, তাই এটি প্রশংসনীয় - লিংক দয়া করে?)
চার্লস ডাফি

@ অ্যান্ড্রুহেনেল আমি বলছি না যে সংঘর্ষ গণিতের পক্ষে অসম্ভব, যা ভুল হবে, তবে এখানে প্রাসঙ্গিক নয়। আমি বলি যে এটি ঘটেনি, যা সত্য। আপনার মন্তব্যটি ভুলভাবে ভুলভাবে চুক্তিটিকে পুরোপুরি পরিবর্তন করে। সম্ভাব্য এমডি 5 হ্যাশগুলি রয়েছে 2 ^ 128, 2 ^ 64 নয়। এর অর্থ সংঘর্ষ উত্পন্ন করার জন্য আপনাকে 2 ^ 128 হ্যাশ তৈরি করতে হবে। প্রকৃতপক্ষে, জন্মদিনের প্যারাডক্সের মাধ্যমে 2 ^ 64 আপনাকে তৈরি করা হ্যাশগুলির মধ্যে সংঘর্ষের ম্যাক্রোস্কোপিক সুযোগ দেবে (পূর্বে উত্পন্ন হ্যাশ দিয়ে নয়)। তবে এটি মোটা যেহেতু আমরা জানি যে কীভাবে সংঘর্ষের ক্রাফট করতে হয়।
গিলস 'অশুভ হওয়া বন্ধ করুন'

6

সংক্ষিপ্ত উত্তর: একটি ক্রিপ্টোগ্রাফিক হ্যাশ আপনাকে মিলে যাওয়া হ্যাশগুলির সাথে ফাইলগুলি একইরকম যুক্তিযুক্তরূপে আত্মবিশ্বাসী হতে সহায়তা করবে বলে মনে করা হচ্ছে। ইচ্ছাকৃতভাবে কারুকার্য করা না হলে দুটি হ্যাশ মানগুলির মতো দুটি ভিন্ন ফাইলের সম্ভাবনা হাস্যকরভাবে ছোট। তবে যখন ইচ্ছাকৃতভাবে হস্তক্ষেপ করা যায় এমন ফাইলগুলির তুলনা এবং যাচাইয়ের বিষয়টি আসে তখন এমডি 5 হ'ল দুর্বল পছন্দ। (SHA3 বা BLAKE2 এর মতো আরেকটি হ্যাশ ফাংশন ব্যবহার করুন))

দীর্ঘ উত্তর: একটি আদর্শ হ্যাশ ফাংশন হ'ল এটি যা প্রতিটি অনন্য তথ্যের জন্য প্রায় এক অনন্য ক্রিপ্টোগ্রাফিক হ্যাশ তৈরি করে। অন্য কথায়, আমরা অবশ্যই জানি যে এই মহাবিশ্বে দুটি ফাইল রয়েছে যার হ্যাশগুলির মানগুলি সংঘর্ষে আসে, এই দুটি ফাইল প্রাকৃতিকভাবে একসাথে আসার সম্ভাবনা হাস্যকরভাবে ছোট।

দশ বছর আগে, আমি সিদ্ধান্ত নিয়েছি যে এমডি 5 থেকে আমার যতদূর সম্ভব থাকতে হবে। (অবশ্যই, গতকাল পর্যন্ত, আমি এটি করার জন্য ভুল কারণটি মনে রেখেছিলাম; দশ বছর দীর্ঘ সময়, আপনি দেখুন why কেন আমি উত্তরটি সম্পাদনা করেছি এবং এই উত্তরটি সম্পাদনা করার জন্য আমি আমার অতীত স্মৃতি পুনর্বিবেচনা করেছি)) আপনি দেখুন 1996 সালে এমডি 5 পাওয়া গিয়েছিল সংঘর্ষের আক্রমণে সংবেদনশীল হয়ে উঠুন। 9 বছর পরে, গবেষকরা একই হ্যাশ সহ পোস্টস্ক্রিপ্ট নথি এবং (আউট!) এক্স.509 শংসাপত্রগুলির জোড়া তৈরি করতে সক্ষম হন! এমডি 5 স্পষ্টভাবে নষ্ট হয়ে গিয়েছিল। (মেগাওপলোড.কম এছাড়াও এমডি 5 ব্যবহার করছিল, এবং হ্যাশের সংঘর্ষগুলির চারপাশে প্রচুর হ্যাঙ্কি-প্যাঙ্কি ছিল যা আমাকে সেই সময় ঝামেলা করেছিল))

সুতরাং, আমি উপসংহারে এসেছি যে এমডি 5 যখন সৌভাগ্যযুক্ত ফাইলগুলির তুলনা করার জন্য নির্ভরযোগ্য ছিল (তবে এখনও এটির পুরোপুরি ব্যবহার বন্ধ করা উচিত)। আমি যুক্তি দিয়েছিলাম যে এটির উপর নির্ভরতার ফলে উপভোগ এবং মিথ্যা আত্মবিশ্বাসে পরিণত হওয়ার ঝুঁকি রয়েছে: আপনি যখন তাদের এমডি 5 হ্যাশ ব্যবহার করে ফাইলগুলির তুলনা শুরু করেন, একদিন আপনি সুরক্ষা ফিনপ্রিন্টটি ভুলে যান এবং দুটি ফাইলের তুলনা করে যা ইচ্ছাকৃতভাবে একই হ্যাশটির জন্য তৈরি করা হয়েছে। এছাড়াও, সিপিইউ এবং ক্রিপ্টোপ্রসেসরগুলি এর জন্য সমর্থন যুক্ত করার সম্ভাবনা কম ছিল।

মূল পোস্টারটিতে এমডি 5 ব্যবহারের আরও কম কারণ রয়েছে কারণ:

  1. যতক্ষণ না কেউ কেবল দুটি ফাইলের সাথে তুলনা করে, বাইট-ফর-বাইট তুলনা আসলে নিজের এমডি 5 হ্যাশ তৈরির চেয়ে দ্রুত হয়। তিন বা ততোধিক ফাইলের তুলনা করার জন্য ... ভাল, এখন আপনার বৈধ কারণ রয়েছে।
  2. ওপি "এটি পর্যালোচনা করার উপায় এবং প্লাগইনগুলির একগুচ্ছ ইনস্টল না করে" নির্দিষ্ট করে। উইন্ডোজ পাওয়ারশেলের গেট-ফাইলহ্যাশ কমান্ডটি SHA1, SHA256, SHA384, SHA512 এবং MD5 হ্যাশ তৈরি করতে পারে। SHA হ্যাশ ফাংশনগুলির জন্য হার্ডওয়্যার সমর্থন সহ আধুনিক কম্পিউটারগুলিতে এগুলি উত্পন্ন করা দ্রুততর।

6
সত্য আপনি চয়ন করুন যে কোনও দৈর্ঘ্যের নিজের ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন তৈরি করতে পারেন; কিন্তু তারপরে এটির একটি নির্দিষ্ট দৈর্ঘ্য রয়েছে এবং কবুতর নীতিটি যাইহোক প্রয়োগ করা হয়। সাধারণ উত্তরটি হ'ল: "কেবল তাদের হ্যাশগুলির সাথে তুলনা করলে আপনি নিশ্চিত হতে পারবেন না যে দুটি ফাইলই অভিন্ন are"
কামিল ম্যাকিয়েরোভস্কি

2
@ কামিলম্যাসিওরোস্কি তত্ত্ব অনুসারে, হ্যাঁ আমি পারব। আমার কাস্টম-মেড হ্যাশ ফাংশনটি কেবল বৃহত্তম ফাইলটির একটি অনুলিপি তৈরি করতে পারে। তবে এ নিয়ে আর আলোচনায় আমার আগ্রহ নেই; সত্যটি হ'ল, আপনি এমন কারণের জন্য অবনমিত হন যা কেবল আপনি বুদ্ধিমান এবং এটি আপনার প্রতিশ্রুতিবদ্ধ প্রমাণ করার জন্য নাইটপিকিংয়ের সমান। এখন আপনি ভোটটি ফিরিয়ে নিতে পারবেন না।

আমি @ কামিলম্যাসিওরওস্কির সাথে একমত ... এটি একটি সম্ভাবনার খেলা ... একটি একক হ্যাশ ব্যবহার করে আপনি " যুক্তিযুক্ত আত্মবিশ্বাসী " হতে পারেন যে ম্যাচের হ্যাশযুক্ত ফাইলগুলি একই, তবে 100% গ্যারান্টি নেই। আরও ভাল অ্যালগরিদম ব্যবহার করা, বা একাধিক অ্যালগরিদম ব্যবহার করা আপনার আত্মবিশ্বাসকে উন্নত করতে পারে - এমনকি ফাইলের আকারের তুলনা করতে সহায়তা করতে পারে ... তবে বাইট-বাই বাইট পরীক্ষা না করে আপনি কখনই 100% আত্মবিশ্বাসী হতে পারবেন না।
এট্টি

1
@ এট্টি হাহ! মূলত আমি এটাই বোঝাতে চাইছি ধন্যবাদ। You কেবলমাত্র "আপনি যুক্তিযুক্ত আত্মবিশ্বাসী হতে পারেন" এর মতো চটকদার বাক্যগুলির সাথে আমি পরিচিত নই। দুঃখিত। 😜 তবুও, এজন্যই আমাদের একটি সম্পাদনা বোতাম রয়েছে। আমি ব্যক্তিগতভাবে কখনই কোনও উত্তরের উত্তর ট্র্যাশ করতে পারি না কারণ এর একটি শব্দই ভুল। আমি এটি সম্পাদনা।

1
"একটি ভাল উত্তর ট্র্যাশ করা" সম্পর্কে: দয়া করে নোট করুন আমি প্রথমে নিশ্চিত করেছি যে এটি কোনও টাইপো নয় এবং আপনি সত্যই এটি বোঝাতে চেয়েছেন; তারপরে ডাউনভোটেড এবং একই সাথে আমি আপনাকে প্রতিক্রিয়া জানালাম, আশা করি আমার উত্তরটি আরও ভাল হয়ে উঠবে এই আশায় আমার কারণটি প্রকাশ করলাম। এটা করেছে, সুতরাং আমার ডাউনভোট আর নেই। মূলত আমি আপনাকে বলেছিলাম যে আমি আপনার উত্তরের সাথে কী ভুল বলে মনে করেছি, এট্টি স্পষ্ট করতে সহায়তা করেছিল, আপনি উত্তরটি উন্নত করলেন। আমার দৃষ্টিকোণ থেকে আমরা সবাই এই পরিস্থিতিটি সঠিকভাবে পরিচালনা করেছি এবং পুরো গল্পটি খুব ভালভাবে বেরিয়েছে। ধন্যবাদ.
কামিল ম্যাকিয়েরোভস্কি

5

আমার কাছে 2 এক্সেল ডকুমেন্ট রয়েছে এবং আমি ফাইলের নাম বাদে সেগুলি হুবহু একই কিনা তা পরীক্ষা করে দেখতে চাই।

ব্যবহারিক দৃষ্টিকোণ থেকে, ফাইলগুলি পৃথক কিনা তা সরাসরি অনুসন্ধান করার জন্য প্রতিটি ফাইলের জন্য একটি হ্যাশ গণনা করা এবং তারপরে সেই হ্যাশের তুলনা করা আরও দ্রুত হবে।

হ্যাশগুলি গণনা করতে আপনাকে উভয় ফাইলের সামগ্রীর সম্পূর্ণতা পড়তে হবে।

তারা সরাসরি তুলনার মাধ্যমে অভিন্ন কিনা তা নির্ধারণ করার জন্য, উভয় ফাইলের সামগ্রীগুলি মেলা না হওয়া অবধি আপনার কেবলমাত্র পড়তে হবে। আপনি যখন কোনও পার্থক্য খুঁজে পান, আপনি জানবেন যে ফাইলগুলি অভিন্ন নয় এবং উভয় ফাইল থেকে আপনাকে আর কোনও ডেটা পড়তে হবে না।

এবং আপনি এটি করার আগে, আপনি কেবল দুটি ফাইলের আকারের তুলনা করতে পারেন। যদি আকারগুলি পৃথক হয় তবে সামগ্রীগুলি একই হতে পারে না।


একটি ফিজিক্যাল ড্রাইভে দুটি ফাইল ব্যবহার করার সময়, প্রতিটি ফাইলের আই / ও গতির সাথে পৃথকভাবে রাখতে পারে এমন একটি হ্যাশ ফাংশন ব্যবহার করা ফাইলগুলির সাথে তুলনা করার চেয়ে কিছুটা দ্রুত হতে পারে, যেহেতু দুটি ফাইল পড়ার মধ্যে পরিবর্তন প্রয়োজন হবে না no স্থানটি হ্যাশগুলি সত্যই জ্বলজ্বল করে, যখন মেমরির সাথে ফিট করার জন্য খুব বেশি বড় ফাইলগুলির সাথে জড়িত তুলনা করার চেষ্টা করা হয়। এমনকি যদি আপনি কেবল এটির সাথে মেলে কিনা তা জানতে চান, ফাইলটিকে 1 ফাইল 2 সাথে তুলনা করে, তারপর ফাইলটি 1 ফাইল করতে 3, তারপরে ফাইলটি 1 ফাইল করা 4 ইত্যাদি তাদের সমস্ত হ্যাশ গণনা করার চেয়ে প্রায় দ্বিগুণ ধীর হতে পারে।
সুপারক্যাট

@ সুপের্যাট যদি ফাইলগুলি এমবি বা তার চেয়ে বেশি বড় অংশগুলিতে পড়ে থাকে তবে ফাইলগুলির মধ্যে স্যুইচিং লক্ষণীয় হবে না। এবং যদি কোনও কাজের প্রবাহে ডুপ্লিকেটগুলি সন্ধানের জন্য একগুচ্ছ ফাইলের সাথে তুলনা করা হয়, তবে হ্যাশ পাশাপাশি প্রতিটি ফাইলের লিখিতভাবে গণনা করা যেতে পারে - যেহেতু এটি করার পরে নিখরচায় বেশিরভাগ কাজ করা যেতে পারে।
অ্যান্ড্রু হেনেল 26'18

যদি কারও কাছে ফাইলগুলির বৃহত অংশগুলি বাফার করার জন্য পর্যাপ্ত জায়গা থাকে তবে স্যুইচিংয়ের সময় কোনও সমস্যা হওয়ার দরকার নেই, তবে অন্যথায় সেগুলি হতে পারে। ফাইলগুলি লেখার সময় হ্যাশগুলি গণনা করার ক্ষেত্রে, যদি কেউ গ্যারান্টি দিতে পারে যে স্টোর হ্যাশগুলি পরিবর্তন বা কমপক্ষে অবৈধকরণ ব্যতীত ফাইলগুলি সংশোধন করা যায় না guarantee এক redundantly ফাইল ব্যাক আপ এড়াতে, শুধুমাত্র সঞ্চিত হ্যাশ মান দিকে তাকিয়ে চেষ্টা করছে যদি একটি ঘটনাক্রমে-দূষিত ফাইল ব্যাক আপ করতে কিন্তু অ ক্ষতিগ্রস্ত ফাইল যা দূষিত ফাইল ব্যাক আপ মাথা ঘামান না এক হতে পারে উচিত মেলে কিন্তু না
সুপারক্যাট

"একবার আপনি যদি কোনও পার্থক্য খুঁজে পান, আপনি জানেন যে ফাইলগুলি অভিন্ন নয়" - অগত্যা নয়। এক্সএলএসএক্স ফাইলগুলি জিপ ফাইল যা সম্ভাব্যভাবে বিভিন্ন ক্রমে সামগ্রীটি এখনও একই সামগ্রীতে রাখা যায় v এমনকি যদি আপনি সেগুলি সংক্রামিত করেন এবং প্রতিটি পৃথক ফাইলের তুলনা করেন, এক্সএলএসএক্স ফাইলটিতে এক্সএমএল ডকুমেন্ট রয়েছে যা সামগ্রীতে কোনও প্রভাব না ফেলেই বিভিন্ন লাইনের শেষ থাকতে পারে।
থমাস ওয়েলার

5

এমডি 5 বা এসএএ-র মতো হ্যাশগুলির দৈর্ঘ্য নির্দিষ্ট রয়েছে, এর 300 টি বর্ণানুক্রমিক অক্ষর (বাস্তবে তারা সংক্ষিপ্ত এবং পুরো বর্ণমালা বর্ণচিহ্ন ব্যবহার করে না) বলতে দেয়।

বলুন যে ফাইলগুলি বর্ণানুক্রমিক অক্ষর এবং 2GB অবধি আকারের তৈরি।

আপনি সহজেই দেখতে পাচ্ছেন যে সম্ভাব্য হ্যাশ মানগুলির চেয়ে আরও কয়েকটি ফাইল রয়েছে (2 গিগাবাইট পর্যন্ত আকারের)। পায়রাহোল নীতিটি বলে যে কয়েকটি (পৃথক) ফাইলের অবশ্যই হ্যাশ মান একই থাকতে হবে।

এছাড়াও, বিচ্ছুরিত.আইও 1 তে প্রদর্শিত হিসাবে আপনার কাছে দুটি পৃথক ফাইল থাকতে পারে: shattered.io/static/shattered-1.pdf এবং shattered.io/static/shattered-2.pdf যা একই রকম SHA-1 হ্যাশ মান থাকার সময় থাকতে পারে পুরোপুরি ভিন্ন.

1 এসএএ 1 এমডি 5 এর চেয়ে একটি "শক্তিশালী" হ্যাশিং অ্যালগরিদম


বিবেচনায় নিতে দুর্ঘটনার সংঘর্ষের সম্ভাবনা খুব কম। ইচ্ছাকৃতভাবে সংঘর্ষের ঝুঁকি এমডি 5 এর জন্যও বিদ্যমান এবং এসএএএ -1 এর চেয়েও খারাপ যা এখানে মারাত্মকভাবে প্রাসঙ্গিক নয়।
গিলস

4

কোন। বিভিন্ন মান বিভিন্ন ফাইলের গ্যারান্টি দেয়। একই মানগুলি ফাইলগুলি একই রকমের গ্যারান্টি নয়। সিআরসি 16 ব্যবহার করে উদাহরণগুলি খুঁজে পাওয়া তুলনামূলক সহজ।

সমসাময়িক হ্যাশিং স্কিমগুলির সাথে সম্ভাবনার ভারসাম্যের ক্ষেত্রে তারা একই।


1
প্রশ্নটি এমডি 5 সম্পর্কে, যার দুর্ঘটনাক্রমে সংঘর্ষের ঝুঁকি নেই। এটিতে ইচ্ছাকৃত সংঘর্ষের ঝুঁকি রয়েছে তবে এটি সম্ভাবনার বিষয় নয়।
গিলস

1
এটি বিভিন্ন নামের এক্সেল স্প্রেডশিটগুলির সম্পর্কেও, তারা কতটা বড় হতে পারে যে বাইট তুলনা করার জন্য বাইট কোনও বিকল্প হতে পারে না? দুটি হ্যাশিং স্কিম একসাথে নিশ্চিতকরণ সরবরাহ করবে।
mckenzm

2
@ গিলিস সংজ্ঞা অনুসারে সমস্ত হ্যাশকোডে দুর্ঘটনাজনিত সংঘর্ষের ঝুঁকি রয়েছে। এর বাইরে যাওয়ার একমাত্র উপায় হ'ল কোডটি পুরো ফাইলটি ব্যবহার করা use আপনার মন্তব্য কোন মানে করে না।
ব্যবহারকারী 207421

3

আপনার প্রশ্নটি পিছনের দিকে, যদিও - ধরে নেওয়া যাক যে হ্যাশটির অর্থ হ'ল তাদের কাছে একই ডেটা রয়েছে (যা 100% গ্যারান্টিযুক্ত নয়, তবে সংঘর্ষে আঘাত না নেওয়ার জন্য প্রতি সেকেন্ডে ফাইলের তুলনা করে সারাজীবন যথেষ্ট ভাল)। এটি অগত্যা অনুসরণ করে না যে একই ডেটা থাকার অর্থ তাদের কাছে একই হ্যাশ থাকবে। সুতরাং না - আপনি একটি এক্সেল ফাইলে থাকা ডাটাটিকে অন্য এক্সেল ফাইলের সাথে ফাইলটি হ্যাশ করে তুলনা করতে পারবেন না কারণ অনেকগুলি উপায় রয়েছে যে অন্তর্নিহিত ডেটা আলাদা না করে দুটি ফাইল পৃথক হতে পারে। একটি সুস্পষ্ট উপায় - ডেটা এক্সএমএল হিসাবে সংরক্ষণ করা হয়, প্রতিটি ঘরে নিজস্ব এক্সএমএল নোড থাকে। যদি সেই নোডগুলি বিভিন্ন অর্ডারে সঞ্চয় করা থাকে তবে ডেটা একই তবে ফাইলটি আলাদা।


3

অন্যান্য উত্তরগুলি যুক্ত করার জন্য, এখানে একই MD5 হ্যাশ এবং বিভিন্ন সামগ্রী সহ ফাইলগুলির দম্পতির উদাহরণ রয়েছে।


কেবলমাত্র একটি লিঙ্ক-উত্তর, তবে আকর্ষণীয়।
থমাস ওয়েলার

2

এই ওপির জন্য উত্তর দেওয়া হয়েছে তবে সংক্ষিপ্তসার থেকে উপকৃত হতে পারে।

আপনি যদি দুটি ফাইল একই কিনা তা পরীক্ষা করতে চান তবে ফাইল এবং হ্যাশগুলি আপনার নিয়ন্ত্রণে রয়েছে কি না তার উপর অনেক কিছুই নির্ভর করে।

যদি আপনি ফাইলগুলি থেকে নিজেই হ্যাশগুলি তৈরি করেন এবং আপনি নিশ্চিত হন যে অন্য কারও কাছে ইচ্ছাকৃতভাবে চেষ্টা করার এবং আপনাকে ভুল সিদ্ধান্তে পৌঁছানোর সুযোগ / দক্ষতা / অনুপ্রেরণা ছিল না, তবে প্রায় কোনও হ্যাশ - এমনকি MD5 এবং SHA1 এর মতো "পরিচিত ভাঙ্গা" হ্যাশগুলিও যথেষ্ট যথেষ্ট। কিন্তু যে, আমি বলতে চাইছি আপনি কোটি কোটি বছর ধরে উচ্চ গতিতে ফাইল জেনারেট পারে এবং আপনার চাই এখনও কোন দুটি ফাইল যে আসলে ভিন্ন কিন্তু একই হ্যাশ আছে দিয়ে শেষ করার সম্ভাবনা কম হতে হবে। এটি প্রায় অবশ্যই নিরাপদ।

আপনার পিসি বা ফাইল সার্ভারের দুটি ডিরেক্টরিতে একই বিষয়বস্তু রয়েছে কিনা তা আপনি যখন দ্রুত পরীক্ষা করতে চান, কোনও ডিরেক্টরিতে যদি কোনও ফাইল হুবহু ডুপ্লিকেট ইত্যাদি থাকে এবং আপনি খুব নিশ্চিত হন যে ফাইলগুলি নেই ইঞ্জিনিয়ার হয়েছে / অবৈধভাবে সংশোধিত হয়েছে এবং সঠিক ফলাফল দেওয়ার জন্য আপনি আপনার হ্যাশিং অ্যাপ / ইউটিলিটিটিতে বিশ্বাস করেছেন।

আপনি যদি এমন পরিস্থিতিতে থাকেন যেখানে কোনও ফাইল - বা একটি প্রাক্ক্যালকুলেটেড হ্যাশ - আপনাকে কোনও ভুল উপসংহারে বোকা বানানোর জন্য চালিত বা ইঞ্জিনিয়ারিং করা হতে পারে তবে আপনার আরও শক্তিশালী (অখণ্ডিত) হ্যাশ এবং / অথবা অন্যান্য সুরক্ষা প্রয়োজন। উদাহরণস্বরূপ, আপনি যদি কোনও ফাইল ডাউনলোড করেন এবং একটি হ্যাশ পরীক্ষা করে এটি বৈধ কিনা তা পরীক্ষা করে দেখুন, তবে আক্রমণকারী কোনও সঠিক ফাইলটি সঠিক হ্যাশ দিয়ে ইঞ্জিনিয়ার করতে সক্ষম হতে পারে, বা "ডানদিকে সন্ধান করার সময় কোনও ভুল হ্যাশ রাখতে ওয়েবসাইটে আক্রমণ করতে পারে" " (প্রত্যাশিত মান. এটি বৃহত্তর সুরক্ষা ইস্যুতে নেমে আসে।


2

উইন্ডোজ কমান্ড লাইনে, compদুটি ফাইল হুবহু একই কিনা তা নির্ধারণ করতে আপনি ইউটিলিটিটি ব্যবহার করতে পারেন । উদাহরণ স্বরূপ:

comp fileone.xls filetwo.xls

1

হ্যাশগুলি অভিন্ন হলে, এর অর্থ কি ফাইলের সামগ্রী 1: 1 একই হয়?

না। হ্যাশগুলি পৃথক হলে এর অর্থ এই নয় যে সামগ্রীগুলি আলাদা different সমান হ্যাশকোডগুলি সমান সামগ্রীকে বোঝায় না। সংজ্ঞা অনুসারে হ্যাশকোডটি একটি বৃহত ডোমেনকে একটি ছোট পরিসরে হ্রাস করা হয়: বোঝা যায় যে অসম সামগ্রীতে হ্যাশকোড সমান হতে পারে। অন্যথায় তাদের গণনা করার কোনও মানে হবে না।


অন্যথায় তাদের গণনা করার কোনও মানে হবে না। আপনি যদি গণিতের আইনগুলি ভেঙে ফেলেছেন এবং কবুতরের নীতি লঙ্ঘন করে র্যান্ডম ডেটা সংকোচন করতে পারে এমন একটি হ্রাসহীন সংক্ষেপণ ফাংশন আবিষ্কার করেছেন, তবে এটি ব্যবহার করা খুব মূল্যবান হবে! এটা অত্যন্ত সুবিধাজনক হতে একটি 128-বিট হ্যাশ হবে না স্বতন্ত্র একটি ফাইলের পুরো বিষয়বস্তু উপস্থাপন করে। এমনকি যদি হ্যাশটিকে ফাইলে ফিরিয়ে আনার জন্য কোনও সংক্ষেপণ ফাংশন না থাকে তবে একটি গাণিতিক-অসম্ভব সংঘর্ষ-মুক্ত হ্যাশটি ভাল লাগবে, যেমন ভিএম চিত্রগুলির মতো অবিশ্বস্ত ডেটাতে ডুপ-ফাইন্ডিংয়ের গতি বাড়ানো।
পিটার কর্ডেস 25'18

"যদি হ্যাশগুলি পৃথক হয় তবে এর অর্থ এই নয় যে সামগ্রীগুলি আলাদা different" অগত্যা। এক্সএলএসএক্স ফাইলগুলি জিপ ফাইল এবং বিভিন্ন ফাইল ক্রমে একই সামগ্রী সংরক্ষণ করা সম্ভব হবে।
থমাস ওয়েলারের

1

এই উত্তরটি দৃশ্যের একটি সহজ মানচিত্র হতে পারে যা ঘটতে পারে বা না ঘটতে পারে এবং যুক্তিগুলি আপনি প্রয়োগ করতে পারেন। কেন হ্যাশ ফাংশনগুলি এভাবে কাজ করে তা জানতে অন্যান্য উত্তরগুলি দেখুন।


আপনি একটি হ্যাশ ফাংশন চয়ন করার পরে এবং এটিতে আটকে যাওয়ার পরে, এগুলি বিবেচনা করার জন্য সমস্ত সম্মিলন:

          |    identical   |   different    |
          |   hash values  |  hash values   |
----------+----------------+----------------+
identical |   can happen,  | cannot happen, |
  files   |     common     |   impossible   |
----------+----------------+----------------+
different |   can happen,  |   can happen,  |
  files   |      rare*     |     common     |
----------+----------------+----------------+

* rare, unless whoever generates (at least one of) the files
  purposely aims at this scenario

যে দৃশ্যে অভিন্ন ফাইলগুলি বিভিন্ন হ্যাশ মান উত্পন্ন করে তা কেবলমাত্র কঠোরভাবে অসম্ভব।


দুটি যুক্তি যা সর্বদা প্রযোজ্য:

  • ফাইল অভিন্ন তাহলে হ্যাশ মান অভিন্ন নিশ্চিত
  • হ্যাশ মান তারপর বিভিন্ন হন ফাইল ভিন্ন নিশ্চিত

দুটি যুক্তি যা কঠোর নয় :

  • যদি ফাইলগুলি পৃথক হয় তবে হ্যাশের মানগুলি সম্ভবত পৃথক।
  • যদি হ্যাশ মানগুলি অভিন্ন হয় তবে ফাইলগুলি সম্ভবত অভিন্ন।

0

আপনার উদ্দেশ্যে, হ্যাঁ, অভিন্ন হ্যাশগুলির অর্থ অভিন্ন ফাইল।

অন্যান্য উত্তরগুলি পরিষ্কার করে দেয় যে, 2 টি পৃথক ফাইল নির্মাণ করা সম্ভব যা একই হ্যাশ এবং এমডি 5 এর ক্ষেত্রে বিশেষভাবে দৃ rob় নয়।

সুতরাং আপনি যদি প্রচুর পরিমাণে এক্সেল ডকুমেন্টগুলির তুলনা করার পরিকল্পনা করেন বা যদি কেউ ভাবেন যে কেউ তুলনাটি পরিচালনা করতে চান তবে শক্তিশালী হ্যাশিং অ্যালগরিদম ব্যবহার করুন। SHA1 এমডি 5 এর চেয়ে ভাল। SHA256 আবার ভাল এবং আপনার নির্দিষ্ট ব্যবহারের জন্য আপনাকে সম্পূর্ণ আত্মবিশ্বাস দেওয়া উচিত।


-1

ফাইলগুলি হ্যাশগুলি অভিন্ন হলে সম্ভবত ফাইলগুলি অভিন্ন। আপনি উভয় ফাইলকে অভিন্ন পদ্ধতিতে পরিবর্তন করে আত্মবিশ্বাস বাড়াতে পারবেন (উদাহরণস্বরূপ একই অব্যবহৃত ঘরে একই মান রাখুন) তারপরে পরিবর্তিত ফাইলগুলির হ্যাশের তুলনা করুন। কোনও ফাইলের জন্য ইচ্ছাকৃত সংঘর্ষ তৈরি করা কঠিন যা আগে থেকে জানা যায় না এমনভাবে পরিবর্তিত হয়েছে।


অফিস ফাইলগুলিতে সঞ্চিত অতিরিক্ত ডেটার কারণে এটি কাজ করবে না। আপনাকে উদাহরণস্বরূপ, সংরক্ষণ করার আগে একই ঘরে কার্সারটি রাখা উচিত, সঠিক সময়ে সঞ্চয় করা ইত্যাদি But ফাইলটি অভিন্ন হলেও হ্যাশটি নেই
টমাস ওয়েলারের

-2

আসুন এটিকে ব্যবহারিক উপায়ে দেখি। "হ্যাশগুলি অভিন্ন" বলার পরিবর্তে আমি বলব "আমি একটি কম্পিউটার প্রোগ্রাম লিখেছিলাম যা দুটি ফাইলের হ্যাশ গণনা করে এবং সেগুলি একই কিনা তা প্রিন্ট করে" এবং আমি দুটি ফাইল দিয়ে প্রোগ্রামটি পরিচালনা করি, এবং এটি বলে "অভিন্ন"। এটি করতে পারে এমন বিভিন্ন কারণ রয়েছে:

ফাইলগুলি অভিন্ন হতে পারে। আমার কোডে বাগ থাকতে পারে (বাস্তবে যা ঘটেছিল তা দুটি লম্বা (256 বাইট) হ্যাশকে মেমক্যাম্পের সাথে নয় বরং স্ট্রিম্পের সাথে তুলনা করে: প্রতিটি হ্যাশের প্রথম বাইট শূন্য হলে তুলনাটি "একই" ফিরে আসবে) এটি 65536 এ 1। একটি হার্ডওয়্যার ত্রুটি হতে পারে (মহাজাগতিক রশ্মি একটি মেমরি সেলকে আঘাত করে এটিকে স্যুইচ করে) Or বা আপনার কাছে অভিন্ন হ্যাশ (একটি হ্যাশ সংঘর্ষ) এর সাথে দুটি ভিন্ন ফাইলের বিরল ঘটনা ঘটতে পারে।

আমি বলব যে অ-অ-অভিন্ন ফাইলগুলির জন্য, সম্ভবত বেশিরভাগ কারণ হ'ল প্রোগ্রামার ত্রুটি, তারপরে মহাজাগতিক রশ্মি আসে যা হ্যাশগুলি "মিথ্যা" থেকে "সত্য" এর সাথে তুলনার ফলাফলের সাথে একটি বুলিয়ান ভেরিয়েবলকে পরিবর্তিত করে এবং আরও অনেক পরে আসে একটি হ্যাশের সংঘর্ষের কাকতালীয় ঘটনা।

এমন এন্টারপ্রাইজ ব্যাকআপ সিস্টেম রয়েছে যা প্রতিটি ফাইল হ্যাশ করে সার্ভারে ইতিমধ্যে সঞ্চিত হ্যাশযুক্ত একটি ফাইল অনুসন্ধান করে 10,000 ব্যবহারকারী থেকে অভিন্ন ফাইলের ব্যাক আপ এড়াতে পারে avoid সুতরাং কোনও সংঘর্ষের ক্ষেত্রে কোনও ফাইল ব্যাক আপ হবে না, সম্ভবত ডেটা হারাতে পারে। কেউ গণনা করেছেন যে এটি অনেক বেশি সম্ভব যে একটি উল্কাপত্র আপনার সার্ভারকে হিট করে এবং কোনও ফাইল হারানোর চেয়ে সমস্ত ব্যাকআপগুলি নষ্ট করে দেয় কারণ এর চেকসামটি একটি ভিন্ন ফাইলের সাথে মেলে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.