বিপুল সংখ্যক ফাইলের জন্য এমডি 5সাম হ্যাশ মানগুলির তুলনা কীভাবে স্বয়ংক্রিয় করবেন


28

আমি টার্মিনাল থেকে একটি ফাইলের md5sum হ্যাশ পরীক্ষা করতে পারি,

$ md5sum my_sensitive_file
8dad53cfc973c59864b8318263737462 my_sensitive_file

তবে কঠিন অংশটি হ্যাশটির মানটি হুবহু একের সাথে তুলনা করা।

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

তুলনামূলক প্রক্রিয়াটি কি স্বয়ংক্রিয়ভাবে সিএলআই-তে সম্ভব?

উত্তর:


39

উদাহরণস্বরূপ আমার কাছে একটি ফাইল রয়েছে test_binary

ফাইল পরীক্ষার MD5 যোগফল ef7ab26f9a3b2cbd35aa3e7e69aad86c

এটি পরীক্ষা করার জন্য এটি স্বয়ংক্রিয়ভাবে এটি চালান:

$ md5sum -c <<<"ef7ab26f9a3b2cbd35aa3e7e69aad86c *path/to/file/test_binary"
test_binary: OK

অথবা

$ echo "595f44fec1e92a71d3e9e77456ba80d1  filetohashA.txt" | md5sum -c -

মানুষের কাছ থেকে উদ্ধৃতি

   -c, --check
          read MD5 sums from the FILEs and check them

উইকির উদ্ধৃতি

দ্রষ্টব্য: তুলনা করার জন্য প্রতিটি এমডি 5সাম মান এবং ফাইল নামের মধ্যে দুটি স্পেস থাকতে হবে। অন্যথায়, নিম্নলিখিত ত্রুটির ফলাফল হবে: "সঠিকভাবে ফর্ম্যাট করা MD5 চেকসাম লাইন পাওয়া যায় নি"।

উইকির লিঙ্ক

এছাড়াও আপনি কেবল ফাইল থেকে এমডি 5 হ্যাশগুলি পড়তে পারেন

$ md5sum -c md5sum_formatted_file.txt

এটি ফর্ম্যাট সহ ফাইলের প্রত্যাশা করছে:

<md5sum_checksum><space><space><file_name>

এমডি 5 এর সমষ্টি হ্যাশ সম্পর্কে *এবং তার <space>পরে। মানুষের খুব কম নোট আছে:

 When  checking,  the
       input  should  be a former output of this program.  The default mode is
       to print a line with checksum, a character indicating input  mode  ('*'
       for binary, space for text), and name for each FILE.

এবং এখানে স্ট্যাকওভারফ্লোটির লিঙ্কটি যেখানে আমি প্রশ্নের উত্তর পেয়েছি, কেন আমাদের মাঝে মাঝে binaryফাইল এবং textফাইলগুলি আলাদা করা উচিত ।



3
তারকাচিহ্ন কি প্রয়োজনীয়?
জবিন

আকর্ষণীয় প্রশ্ন। আমি সর্বদা সাথে ব্যবহার করি *, তবে উইকি বলেছিল যে এটি দুটি স্থান হওয়া উচিত। আমি অনুসন্ধান করব ...
c0rp

@ সৌরভ ঠিক আছে, আমি * সম্পর্কে তথ্য পেয়েছি, শীঘ্রই আপডেট হবে
c0rp

@ জোবিন আমি *উত্তর দেওয়ার জন্য আবর্জনিত তথ্য যুক্ত করব
c0rp

এটা বোধগম্য. +1 '
জবিন

2

একটি সম্ভাবনা হল ইউটিলিটি সিএফভি ব্যবহার করা

sudo apt-get install cfv

সিএফভি অনেক ধরণের হ্যাশ এবং উভয় পরীক্ষার এবং হ্যাশ ফাইল তৈরি সমর্থন করে।

# List the files
$ ls
test.c
# Create a hash file
$ cfv -tmd5 -C
temp.md5: 1 files, 1 OK.  0.001 seconds, 302.7K/s
# Test the hash file
$ cfv -tmd5 -T
temp.md5: 1 files, 1 OK.  0.001 seconds, 345.1K/s
# Display the hash file
$ cat *.md5
636564b0b10b153219d6e0dfa917d1e3 *test.c

1
আপনার উত্তরের জন্য ধন্যবাদ, তবে এটির জন্য অন্য একটি ইউটিলিটি ইনস্টল করা দরকার। একই সাথে এটি অন্যান্য ফর্ম্যাটকেও সমর্থন সরবরাহ করে। এটি সম্পর্কে জেনে রাখা ভাল। তবে বর্তমান প্রসঙ্গে আমি অন্য উত্তরটি নিয়ে যাব। যাইহোক আমার কাছ থেকে +1।
সৌরভসি

1

হ্যাঁ, *এই কমান্ডের জন্য তারকাচিহ্ন আবশ্যক। এই উদাহরণটি একবার দেখুন।

এটি বাইনারি ফাইল এবং সঠিক md5sum মানটি exampleofcorrectmd5value00000000(32 হেক্সাডেসিমাল চর) বলা যাক

[root@Linux update]# ls -lh
total 137M
-rw-r--r-- 1 root root 137M Nov  5 13:01 binary-file.run.tgz
[root@Linux update]# 

-সি, - চেক

ফাইলগুলি থেকে MD5 পরিমাণ পড়ুন এবং সেগুলি পরীক্ষা করুন

যদি md5sum মান বাইনারি ফাইলের সাথে মেলে তবে আপনি এই আউটপুটটি পাবেন

[root@Linux ~]# md5sum -c <<< "exampleofcorrectmd5value00000000" *binary-file.run.tgz"
binary-file.run.tgz: OK
[root@Linux ~]# 

এবং এটি তখনই যখন md5sum মান মেলে না

[root@Linux update]# md5sum -c <<< "exampleofwrongmd5value0000000000 *binary-file.run.tgz"
binary-file.run.tgz: FAILED
md5sum: WARNING: 1 of 1 computed checksum did NOT match
[root@Linux update]# 

তারকাচিহ্ন ব্যতীত *, আপনি নিম্নলিখিত ত্রুটি বার্তাটি পেয়েছেন এমনকি এমডি 5 মানটি সঠিক মনে করেছেন

[root@Linux ~]# md5sum -c <<< "exampleofcorrectmd5value00000000 binary-file.run.tgz" 
md5sum: standard input: no properly formatted MD5 checksum lines found
[root@Linux ~]# 

এছাড়াও, md5sum এর মধ্যে 32 হেক্সাডেসিমাল অক্ষর না থাকলে আপনিও একই ত্রুটি বার্তা পাবেন। এই উদাহরণে এটির কেবলমাত্র 31 টি অক্ষর রয়েছে।

[root@Linux ~]# md5sum -c <<< "exampleofmd5valuelessthan32char *binary-file.run.tgz" 
md5sum: standard input: no properly formatted MD5 checksum lines found
[root@Linux ~]# 

অনেকগুলি ফাইলের সমাধান

আপনার যদি অনেকগুলি ফাইল থাকে এবং প্রক্রিয়াটি স্বয়ংক্রিয় করতে চান তবে আপনি এই পদক্ষেপগুলি অনুসরণ করতে পারেন:

user@Ubuntu:~$ ls -lh
total 12K
-rw-rw-r-- 1 user user 4 Nov  5 14:54 file-a
-rw-rw-r-- 1 user user 4 Nov  5 14:54 file-b
-rw-rw-r-- 1 user user 4 Nov  5 14:54 file-c
user@Ubuntu:~$ 

প্রতিটি ফাইলের জন্য md5sum উত্পন্ন করুন এবং এটি md5sum.txt এ সংরক্ষণ করুন

user@Ubuntu:~$ md5sum * | tee md5sum.txt
0bee89b07a24ae27c83fc3d5951213c1  file-a
1b2297c171a9a450d184871ccf6c9ad4  file-b
7f4d13d9b0b6ac086fd68637067435c5  file-c
user@Ubuntu:~$ 

সমস্ত ফাইলের জন্য md5sum পরীক্ষা করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন।

user@Ubuntu:~$ md5sum -c md5sum.txt 
file-a: OK
file-b: OK
file-c: OK
user@Ubuntu:~$ 

এটি উদাহরণস্বরূপ যদি md5sum মানটি ফাইলের সাথে মেলে না। এই ক্ষেত্রে, আমি file-bসামগ্রী পরিবর্তন করতে যাচ্ছি

user@Ubuntu:~$ echo "new data" > file-b 
user@Ubuntu:~$ 

দেখুন, এটি ত্রুটির বার্তা। আশাকরি এটা সাহায্য করবে.

user@Ubuntu:~$ md5sum -c md5sum.txt 
file-a: OK
file-b: FAILED
file-c: OK
md5sum: WARNING: 1 computed checksum did NOT match
user@Ubuntu:~$ 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.