উত্তর:
সিআরসি ঘটতে পারে এমন ডেটাতে এলোমেলো ত্রুটি সনাক্ত করার জন্য সূক্ষ্ম কাজ করে, উদাহরণস্বরূপ, নেটওয়ার্ক হস্তক্ষেপ, লাইন গোলমাল, বিকৃতি ইত্যাদি from
সিআরসি কম্পিউটেশনালি এমডি 5 বা এসএএএ 1 এর চেয়ে কম জটিল। এমডি 5 এর মতো হ্যাশ ফাংশন ব্যবহার করা এলোমেলো ত্রুটি সনাক্তকরণের জন্য সম্ভবত ওভারকিল। তবে, যে কোনও ধরণের সুরক্ষা চেকের জন্য সিআরসি ব্যবহার করা এমডি 5 এর মতো জটিল জটিল হ্যাশিংয়ের চেয়ে অনেক কম সুরক্ষিত হবে।
এবং হ্যাঁ, এম্বেডেড হার্ডওয়্যারগুলিতে সিআরসি কার্যকর করা অনেক সহজ, আপনি এমনকি আইসি-তে এর জন্য বিভিন্ন প্যাকেজযুক্ত সমাধান পেতে পারেন।
MD5
, SHA-1
এড়ানোও উচিত, এর কিছু বৈকল্পিক SHA-2
দেওয়া উচিত।
সিআরসি ডেটাগুলিতে অনিচ্ছাকৃত পরিবর্তনের বিরুদ্ধে নকশাকৃত। এটি হ'ল অনিচ্ছাকৃত ত্রুটিগুলি সনাক্তকরণের পক্ষে ভাল তবে এটি কোনও ডেটা দূষিতভাবে পরিচালনা করা হয়নি তা নিশ্চিত করার উপায় হিসাবে অকেজো হবে।
আরো দেখুন এই ।
আমি একটি সমীক্ষায় দেখা গেছে শো কিভাবে অনুপযুক্ত সিআরসি হ্যাশ হ্যাশ টেবিল জন্য । এটি অ্যালগরিদমের আসল বৈশিষ্ট্যগুলিও ব্যাখ্যা করে। গবেষণায় অন্যান্য হ্যাশ অ্যালগরিদমের মূল্যায়নও অন্তর্ভুক্ত এবং এটি রাখা ভাল রেফারেন্স।
হ্যাশগুলির জন্য সিআরসি সম্পর্কিত প্রাসঙ্গিক উপসংহার:
সিআরসি 32 কখনই হ্যাশ টেবিল ব্যবহারের উদ্দেশ্যে নয়। এ উদ্দেশ্যে এটি ব্যবহার করার সত্যিই কোনও ভাল কারণ নেই এবং আমি আপনাকে এটি করা এড়াতে পরামর্শ দিচ্ছি। আপনি যদি সিআরসি 32 ব্যবহার করার সিদ্ধান্ত নেন তবে এটি গুরুত্বপূর্ণ যে আপনি হ্যাশ বিটগুলি প্রান্ত থেকে বিপরীতে ব্যবহার করবেন যাতে কী অকটেট খাওয়ানো হয় Which কোন শেষ এটি নির্দিষ্ট সিআরসি 32 বাস্তবায়নের উপর নির্ভর করে। সিআরসি 32 কে "ব্ল্যাক বক্স" হ্যাশ ফাংশন হিসাবে ব্যবহার করবেন না এবং এটিকে সাধারণ উদ্দেশ্য হ্যাশ হিসাবে ব্যবহার করবেন না। উপযুক্ততার জন্য এটির প্রতিটি প্রয়োগ পরীক্ষা করে নেওয়ার বিষয়ে নিশ্চিত হন।
হালনাগাদ
সাইটটি ডাউন আছে বলে মনে হচ্ছে। ইন্টারনেট সংরক্ষণাগার একটি কপি আছে যদিও।
আমি এই পিএইচপি কোডটির প্রতিটি লাইন 1.000.000 লুপে চালিয়েছি। ফলাফল মন্তব্য (#) হয়।
hash('crc32', 'The quick brown fox jumped over the lazy dog.');# 750ms 8 chars
hash('crc32b','The quick brown fox jumped over the lazy dog.');# 700ms 8 chars
hash('md5', 'The quick brown fox jumped over the lazy dog.');# 770ms 32 chars
hash('sha1', 'The quick brown fox jumped over the lazy dog.');# 880ms 40 chars
hash('sha256','The quick brown fox jumped over the lazy dog.');# 1490ms 64 chars
hash('sha384','The quick brown fox jumped over the lazy dog.');# 1830ms 96 chars
hash('sha512','The quick brown fox jumped over the lazy dog.');# 1870ms 128 chars
আমার উপসংহার:
আপনার যখন সুরক্ষা স্তর যুক্ত করার দরকার হয় তখন "sha256" (বা উচ্চতর) ব্যবহার করুন।
"এমডি 5" বা "শ 1" ব্যবহার করবেন না কারণ তাদের রয়েছে:
"The quick brown fox jumped over the lazy dog."
) আপনি দেখতে পাবেন যে এমডি 5 এর চেয়ে সিআরসি কত দ্রুত।
বাস্তবায়নে সিআরসি তথ্যের জন্য, গতি ও নির্ভরযোগ্যতা দেখতে সিআরসি ত্রুটি সনাক্তকরণ আলগোরিদিম একটি যন্ত্রণাহীন নির্দেশিকা । সিআরসি-তে এটি রয়েছে।
যদি না কেউ আপনার ডেটাটিকে দূষিতভাবে চেষ্টা ও পরিবর্তন করতে চলেছে এবং পরিবর্তনটি লুকিয়ে রাখে তবে সিআরসিই যথেষ্ট। কেবলমাত্র একটি "গুড" (মানক) বহুভুজ ব্যবহার করুন।
এটি আপনার প্রয়োজনীয়তা এবং প্রত্যাশার উপর নির্ভর করে।
এই হ্যাশ ফাংশন অ্যালগরিদমের মধ্যে দ্রুত সংক্ষিপ্ত পার্থক্য রয়েছে :
একটি ক্রিপ্টোগ্রাফিক হ্যাশ অ্যালগরিদম,
একটি 160-বিট (20-বাইট) হ্যাশ মান উত্পাদন করে যা একটি বার্তা হজম হিসাবে পরিচিত
এটি একটি ক্রিপ্টোগ্রাফিক হ্যাশ এবং 2005 সাল থেকে এটি আর নিরাপদ হিসাবে বিবেচিত হয় না,
এনক্রিপশন উদ্দেশ্যে ব্যবহার করা যেতে পারে,
প্রথম প্রকাশিত 1993 সালে (SHA-0 হিসাবে), তারপরে 1995 SHA-1 হিসাবে,
সিরিজ: SHA-0, SHA-1, SHA-2, SHA-3,
সংক্ষেপে, SHA-1 ব্যবহার করা আর সু-তহবিল বিরোধীদের বিরুদ্ধে নিরাপদ হিসাবে বিবেচিত হয় না, কারণ ২০০৫ সালে, ক্রিপ্ট্যানালিস্টরা এসএএএ -১-তে আক্রমণ খুঁজে পেয়েছিল যা বোঝায় যে এটি চলমান ব্যবহারের জন্য যথেষ্ট পরিমাণে নিরাপদ নাও হতে পারে । ইউএস এনআইএসটি পরামর্শ দেয় যে ফেডারাল এজেন্সিগুলিকে সংঘর্ষ প্রতিরোধের প্রয়োজন হয় এমন অ্যাপ্লিকেশনের জন্য SHA1-1 ব্যবহার বন্ধ করা উচিত এবং 2010 এর NIST এর পরে অবশ্যই SHA-2 ব্যবহার করা উচিত ।
অতএব, যদি আপনি কোনও ফাইলের অখণ্ডতা পরীক্ষা করার জন্য (দুর্নীতির বিরুদ্ধে), বা পারফরম্যান্সের ক্ষেত্রে কিছু সহজ ক্যাচিংয়ের উদ্দেশ্যে, সহজ এবং দ্রুত সমাধানের সন্ধান করেন তবে আপনি সিআরসি -32 বিবেচনা করতে পারেন, আপনি হ্যাশিংয়ের জন্য ব্যবহার করতে পারেন বলে বিবেচনা করতে পারেন MD5, তবে যদি কোনও সংঘর্ষের সম্ভাবনা এড়াতে আপনি পেশাদার অ্যাপ্লিকেশনটি (যা সুরক্ষিত এবং ধারাবাহিক হওয়া উচিত) বিকাশ করছেন - SHA-2 এবং তারপরের (যেমন SHA-3) ব্যবহার করুন।
পিএইচপি-তে কিছু সাধারণ বেনমার্ক পরীক্ষা:
# Testing static text.
$ time php -r 'for ($i=0;$i<1000000;$i++) crc32("foo");'
real 0m0.845s
user 0m0.830s
sys 0m0.008s
$ time php -r 'for ($i=0;$i<1000000;$i++) md5("foo");'
real 0m1.103s
user 0m1.089s
sys 0m0.009s
$ time php -r 'for ($i=0;$i<1000000;$i++) sha1("foo");'
real 0m1.132s
user 0m1.116s
sys 0m0.010s
# Testing random number.
$ time php -r 'for ($i=0;$i<1000000;$i++) crc32(rand(0,$i));'
real 0m1.754s
user 0m1.735s
sys 0m0.012s\
$ time php -r 'for ($i=0;$i<1000000;$i++) md5(rand(0,$i));'
real 0m2.065s
user 0m2.042s
sys 0m0.015s
$ time php -r 'for ($i=0;$i<1000000;$i++) sha1(rand(0,$i));'
real 0m2.050s
user 0m2.021s
sys 0m0.015s
সম্পর্কিত:
আপনি এটি রক্ষার চেষ্টা করছেন না তা বলবেন না।
একটি সিআরসি প্রায়শই এম্বেড হওয়া সিস্টেমে দূষিত সিস্টেম সংশোধন প্রতিরোধের বিপরীতে দুর্ঘটনাজনিত ডেটা দুর্নীতির বিরুদ্ধে পরীক্ষা হিসাবে ব্যবহৃত হয়। সিআরসি যে জায়গাগুলি কার্যকর হতে পারে তার উদাহরণ হ'ল ফার্মওয়্যার দুর্নীতির বিরুদ্ধে রক্ষা করার জন্য সিস্টেম ইনিশিয়ালেশনের সময় একটি ইপ্রোম চিত্রকে বৈধতা দেওয়া। সিস্টেম বুটলোডার অ্যাপ্লিকেশন কোডের জন্য সিআরসি গণনা করবে এবং কোডটি চালানোর অনুমতি দেওয়ার আগে সঞ্চিত মানের সাথে তুলনা করবে। এটি দুর্ঘটনাজনিত প্রোগ্রামের দুর্নীতি বা ব্যর্থ ডাউনলোডের সম্ভাবনা থেকে সুরক্ষা দেয়।
ফ্ল্যাশ বা ইপ্রোমে সংরক্ষিত কনফিগারেশন ডেটা সুরক্ষার জন্য একটি সিআরসি একই পদ্ধতিতে ব্যবহার করা যেতে পারে। সিআরসি যদি ভুল হয় তবে ডেটাটি অবৈধ হিসাবে পতাকাঙ্কিত হতে পারে এবং একটি ডিফল্ট বা ব্যাকআপ ডেটা সেট ব্যবহৃত হয়। সিআরসি ডিভাইস ব্যর্থতার কারণে বা কনফিগারেশন ডেটা স্টোরের আপডেটের সময় যদি ব্যবহারকারী শক্তি সরিয়ে দেয় তবে এটি অবৈধ হতে পারে।
একটি মন্তব্য রয়েছে যে একাধিক বিট ত্রুটিযুক্ত সিআরসি এর চেয়ে একটি হ্যাশ দুর্নীতি সনাক্তকরণের আরও বেশি সম্ভাবনা সরবরাহ করে। এটি সত্য, এবং কোনও 16 বা 32 বিট সিআরসি ব্যবহার করার বা না নেওয়ার সিদ্ধান্তটি ব্যবহার করা হচ্ছে এমন দুর্নীতিগ্রস্থ ডেটা ব্লকের সুরক্ষা পরিণতির উপর জড়িত এবং আপনি 2 ^ 16 বা 2 ^ 32 এর 1টিকে ন্যায্যতা প্রমাণ করতে পারবেন কিনা ডেটা ব্লককে ভুলভাবে বৈধ বলে ঘোষণা করা হচ্ছে।
অনেক ডিভাইসে স্ট্যান্ডার্ড অ্যালগরিদমের জন্য সিআরসি জেনারেটর অন্তর্নির্মিত থাকে। টেক্সাসের এমএসপি 430 এফ 5 এক্স সিরিজের সিআরসি-সিসিটিটি স্ট্যান্ডার্ডের একটি হার্ডওয়্যার প্রয়োগ রয়েছে have
কেবলমাত্র সিআরসি ব্যবহার করুন যদি গণনার সংস্থানগুলি খুব আঁটসাঁট থাকে (যেমন কিছু এম্বেড এনভায়রনমেন্টস) বা আপনাকে অনেক আউটপুট মান সংরক্ষণ করতে এবং পরিবহণ করতে হবে এবং স্থান / ব্যান্ডউইথ টাইট (সিআরসি সাধারণত 32-বিট যেখানে এমডি 5 আউটপুট 128-বিট থাকে, SHA1 160 বিট এবং অন্যান্য এসএইচএর ভেরিয়েন্টগুলি 512 বিট অবধি)।
সুরক্ষা চেকগুলির জন্য সিআরসি কখনই ব্যবহার করবেন না কারণ সিআরসি "জাল" করা খুব সহজ।
এমনকি দুর্ঘটনাজনিত ত্রুটি সনাক্তকরণের জন্য (দূষিত পরিবর্তন সনাক্তকরণের চেয়ে) হ্যাশগুলি সাধারণ সিআরসি থেকে ভাল। আংশিকভাবে কোনও সিআরসি গণনা করার সহজ উপায়ের কারণে (এবং আংশিক কারণ সিআরসি মানগুলি সাধারণ হ্যাশ আউটপুটগুলির তুলনায় স্বাভাবিকের চেয়ে কম সংখ্যক সম্ভাব্য মানগুলির চেয়ে অনেক ছোট পরিসীমা থাকে) এটি সম্ভবত অনেক বেশি সম্ভবত এমন পরিস্থিতিতে যেখানে দুটি বা ততোধিক ত্রুটি রয়েছে , একটি ত্রুটি অন্যটিকে মাস্ক করবে যাতে দুটি ত্রুটি থাকা সত্ত্বেও আপনি একই সিআরসি দিয়ে শেষ হন।
সংক্ষেপে: যদি আপনার কাছে একটি শালীন হ্যাশ অ্যালগরিদম ব্যবহার না করার কারণ না থাকে তবে সাধারণ সিআরসি এড়িয়ে চলুন।
আমি সম্প্রতি সিআরসি ব্যবহার করেছিলাম যা স্মার্ট ছিল। লেখক jdupe ফাইল অনুলিপি সনাক্তকরণ এবং সরানোর সরঞ্জাম (জনপ্রিয় Exif টুল jhead একই লেখক) ফাইল মাধ্যমে প্রথম পাস সময় তা ব্যবহার করে। সিআরসি প্রতিটি ফাইলের প্রথম 32 কে গণনা করা হয় যেগুলি একই হিসাবে উপস্থিত ফাইলগুলি চিহ্নিত করতে, এছাড়াও ফাইলগুলি একই আকার থাকতে হবে। এই ফাইলগুলিকে একটি ফাইলের তালিকায় যুক্ত করা হয় যার উপর সম্পূর্ণ বাইনারি তুলনা করতে হয়। এটি বড় মিডিয়া ফাইলগুলি পরীক্ষা করার গতি বাড়ায়।
বুনিয়াদি দিয়ে শুরু করা যাক।
ক্রিপ্টোগ্রাফিতে, একটি হ্যাশিং অ্যালগরিদম ডাইজেস্ট অপারেশনের মাধ্যমে অনেকগুলি বিটকে কম বিটে রূপান্তরিত করে। বার্তা এবং ফাইলগুলির অখণ্ডতা নিশ্চিত করতে হ্যাশগুলি ব্যবহৃত হয়।
সমস্ত হ্যাশিং অ্যালগরিদম সংঘর্ষ উত্পন্ন করে। সংঘর্ষ হ'ল যখন বেশ কয়েকটি বিট সংমিশ্রণগুলি একই কম বিট আউটপুট উত্পাদন করে। একটি হ্যাশিং অ্যালগরিদমের ক্রিপ্টোগ্রাফিক শক্তিটি কোনও নির্দিষ্ট ইনপুটটির জন্য আউটপুট কী হতে পারে তা নির্ধারণের অক্ষমতার দ্বারা সংজ্ঞায়িত করা হয় কারণ তারা যদি পারত তবে তারা যদি একটি বৈধ ফাইলের সাথে মিলে একটি হ্যাশ দিয়ে একটি ফাইল তৈরি করতে পারে এবং ধরে নেওয়া অখণ্ডতার সাথে আপস করতে পারে সিস্টেমের। সিআরসি 32 এবং এমডি 5 এর মধ্যে পার্থক্য হ'ল এমডি 5 একটি বৃহত্তর হ্যাশ উত্পন্ন করে যার পূর্বাভাস দেওয়া আরও শক্ত।
আপনি যখন বার্তার অখণ্ডতা প্রয়োগ করতে চান - অর্থ বার্তায় ট্রানজিটে কোনও ছলচাতুরী হয়নি - সংঘর্ষের পূর্বাভাস দেওয়ার অক্ষমতা একটি গুরুত্বপূর্ণ সম্পত্তি। একটি 32-বিট হ্যাশ 4 বিলিয়ন বিভিন্ন অনন্য হ্যাশ ব্যবহার করে 4 বিলিয়ন বিভিন্ন বার্তা বা ফাইলগুলি বর্ণনা করতে পারে । আপনার 4 বিলিয়ন এবং 1 টি ফাইল থাকলে আপনার 1 টি সংঘর্ষের নিশ্চয়তা রয়েছে। 1 টিবি বিটস্পেসে বিলিয়ন মিলিয়ন সংঘর্ষের সম্ভাবনা রয়েছে। যদি আমি আক্রমণকারী এবং আমি 32 বিট হ্যাশটি কী হতে চলেছে তা অনুমান করতে পারি, তবে আমি একটি সংক্রামিত ফাইলটি তৈরি করতে পারি যা লক্ষ্য ফাইলের সাথে সংঘর্ষ হয়; যে একই হ্যাশ আছে।
অতিরিক্তভাবে যদি আমি 10 এমবিপিএস ট্রান্সমিশন করছি তবে crc32 বাইপাস করে গন্তব্য অবধি চালিয়ে যাওয়ার এবং সম্পাদন করার জন্য কোনও প্যাকেট দূষিত হওয়ার সম্ভাবনা খুব কম। 10mbps এ বলি আমি 10 টি ত্রুটি পাই \ সেকেন্ড । আমি যদি এটি 1 জিবিপিএস পর্যন্ত র্যাম্প করি তবে এখন প্রতি সেকেন্ডে 1000 টি ত্রুটি পাচ্ছি । আমি যদি প্রতি সেকেন্ডে 1 এক্সবিবিট পর্যন্ত র্যাম করি তবে আমার প্রতি সেকেন্ডে 1,000,000,000 ত্রুটির ত্রুটি হার রয়েছে । বলুন আমাদের সংঘর্ষের হার 1 \ 1,000,000সংক্রমণ ত্রুটি, 1 মিলিয়ন ট্রান্সমিশনের ত্রুটির অর্থ 1 দুর্নীতিগ্রস্থ ডেটা সনাক্ত করা যায় না results 10 এমবিপিএসে আমি প্রতি 100,000 সেকেন্ড বা দিনে একবারে পাঠানোর সময় ত্রুটিযুক্ত ডেটা পেয়ে যাব। 1 জিবিবিএসে প্রতি 5 মিনিটে একবার এটি ঘটবে। প্রতি সেকেন্ডে 1 এক্সবিবিটে, আমরা সেকেন্ডে বেশ কয়েকবার কথা বলছি।
আপনি যদি ওয়ারশার্ক উন্মুক্ত করেন আপনি দেখতে পাবেন যে আপনার সাধারণ ইথারনেট শিরোনামটিতে একটি সিআরসি 32 রয়েছে, আপনার আইপি শিরোনামটিতে একটি সিআরসি 32 রয়েছে এবং আপনার টিসিপি শিরোনামে একটি সিআরসি 32 রয়েছে এবং এটি উচ্চ স্তরের প্রোটোকলগুলি কী করতে পারে তা ছাড়াও; উদাহরণস্বরূপ, আইপিএসইসি উপরেরগুলি ছাড়াও সততা যাচাইয়ের জন্য MD5 বা SHA ব্যবহার করতে পারে। টিপিক্যাল নেটওয়ার্ক যোগাযোগগুলিতে ত্রুটি পরীক্ষা করার কয়েকটি স্তর রয়েছে এবং তারা সাব 10 এমপিপিএস গতিতে এখন এবং আবার বোকা বানায়।
চক্রীয় রিডানডেন্সি চেক (সিআরসি) এর বেশ কয়েকটি সাধারণ সংস্করণ এবং বেশ কয়েকটি অস্বাভাবিক ঘটনা রয়েছে তবে সাধারণত কোনও বার্তা বা ফাইল ট্রানজিটে ক্ষতিগ্রস্থ হয়েছে (একাধিক বিটস ফ্লিপিং)। সংঘর্ষের হারের কারণে বৃহত, স্কেলার এন্টারপ্রাইজ পরিবেশে আজকের মান অনুসারে সিআরসি 32 একটি খুব ভাল ত্রুটি নয়; গড় ব্যবহারকারীরা হার্ড-ড্রাইভের উপরের দিকে 100k ফাইল থাকতে পারে এবং কোনও সংস্থার ফাইল-শেয়ারে কয়েক মিলিয়ন লোক থাকতে পারে। ফাইলের সংখ্যার সাথে হ্যাশ-স্পেসের অনুপাত মাত্র খুব কম। সিআরসি 32 বাস্তবায়নের জন্য গণ্যগতভাবে সস্তা, যদিও এমডি 5 নেই।
দূষিত ফাইলটিকে সৌম্যরূপ দেখাতে এমডি 5 টি সংঘর্ষের ইচ্ছাকৃতভাবে ব্যবহার বন্ধ করতে ডিজাইন করা হয়েছিল। এটি অনিরাপদ হিসাবে বিবেচিত হয়েছে কারণ কিছু আক্রমণ আক্রমণ করতে সক্ষম হ্যাশস্পেস যথেষ্ট পরিমাণে ম্যাপ করা হয়েছে এবং কিছু সংঘর্ষের পূর্বাভাসযোগ্য। SHA1 এবং SHA2 ব্লকের নতুন বাচ্চা।
ফাইল যাচাইকরণের জন্য, মোড 5 প্রচুর বিক্রেতারা ব্যবহার করা শুরু করছেন কারণ আপনি এটির সাথে দ্রুত মাল্টিগিগাবাইট ফাইল বা মাল্টিট্রাবাইট ফাইলগুলি করতে পারেন এবং সিআরসি 32 এর সাধারণ ওএসের ব্যবহার এবং সমর্থনের উপরে এটি স্ট্যাক করতে পারেন। পরবর্তী দশকের মধ্যে যদি ফাইল সিস্টেমগুলি ত্রুটি পরীক্ষার জন্য MD5 ব্যবহার শুরু করে তবে অবাক হবেন না।