হ্যাশিং এবং এনক্রিপশন অ্যালগরিদমের মধ্যে মৌলিক পার্থক্য


509

আমি হ্যাশ এবং এনক্রিপশন অ্যালগরিদমের মধ্যে অনেক বিভ্রান্তি দেখতে পাচ্ছি এবং আমি এ সম্পর্কে আরও কিছু বিশেষজ্ঞের পরামর্শ শুনতে চাই:

  1. হ্যাশ বনাম এনক্রিপশন কখন ব্যবহার করবেন

  2. কোন হ্যাশ বা এনক্রিপশন অ্যালগরিদমকে আলাদা করে তোলে (তাত্ত্বিক / গাণিতিক স্তর থেকে) অর্থাত্ হ্যাশগুলি অপরিবর্তনীয় করে তোলে (একটি রংধনু গাছের সহায়তা ছাড়াই)

এখানে কিছু অনুরূপ এসও প্রশ্ন রয়েছে যা আমি যতটা বিশদ খুঁজছিলাম ততটা বিশদে যায় নি:

অবফেসেশন, হ্যাশিং এবং এনক্রিপশনের মধ্যে পার্থক্য কী?
এনক্রিপশন এবং হ্যাশিংয়ের মধ্যে পার্থক্য


28
আমি এই হচ্ছে দূরদর্শন পারেন প্রশ্ন যখন তারা পদ গুলান মানুষ পড়ুন। :)
অ্যাডাম পেইন্টার

18
হ্যাশিং একটি উপায় (ফেরানো যাবে না), এনক্রিপশন দ্বি-মুখী (ডিক্রিপ্ট করা যেতে পারে)
বেটসেস

বড় বড় কাঠামো এবং অবজেক্টগুলি, যেমন ফাইলগুলি সূচীকরণের জন্যও হ্যাশগুলি কার্যকর। হ্যাশ টেবিল দেখুন ।
HABO

22
হ্যাশিং মাংস পেষকদন্তের মতো। আপনি একটি গরুকে হ্যামবার্গারে পরিণত করতে পারেন, তবে বিপরীত নয়।
নীল ম্যাকগুইগান

আমি লক্ষ্য করেছি আমার প্রশ্নটি সম্পাদিত হয়েছিল। আমি সর্বদা দুজনের মধ্যে শীর্ষ স্তরের পার্থক্যগুলি জানতাম তবে নিম্ন স্তরের / গাণিতিক পার্থক্য সম্পর্কে আরও আগ্রহী ছিলাম। :) যে কোনও উপায়ে, এসও এর জন্য প্রচুর ভাল সামগ্রী! অনেক ধন্যবাদ!
কেনি সিজন

উত্তর:


738

ঠিক আছে, আপনি এটি উইকিপিডিয়ায় সন্ধান করতে পারেন ... তবে আপনি যেহেতু ব্যাখ্যা চান, তাই আমি এখানে যথাসাধ্য চেষ্টা করব:

হ্যাশ ফাংশন

তারা একটি স্বেচ্ছাসেবী দৈর্ঘ্যের ইনপুট এবং একটি (সাধারণত) নির্দিষ্ট দৈর্ঘ্য (বা ছোট দৈর্ঘ্য) আউটপুট মধ্যে ম্যাপিং সরবরাহ করে। এটি সাধারণ crc32 থেকে এমডি 5 বা এসএএএ 1/2/256/512 এর মতো একটি সম্পূর্ণ ফুঁকানো ক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন পর্যন্ত কিছু হতে পারে। মুল বক্তব্যটি হচ্ছে ওয়ান-ওয়ে ম্যাপিং চলছে। এটি সর্বদা অনেকগুলি: 1 ম্যাপিং (যার অর্থ সর্বদা সংঘর্ষ হবে) যেহেতু প্রতিটি ক্রিয়াকলাপ ইনপুট করতে সক্ষমের তুলনায় একটি ছোট আউটপুট উত্পাদন করে (যদি আপনি এমডি 5 তে প্রতিটি 1 এমবি ফাইল সরবরাহ করেন তবে আপনি এক টন সংঘর্ষ পাবেন)।

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

এখন, আপনি যদি হ্যাশটি ডিকোড করতে চেয়েছিলেন তবে প্রথমে প্রদত্ত হ্যাশটিকে তার পুনরাবৃত্ত অবস্থার মধ্যে কীভাবে বিভক্ত করবেন তা নির্ধারণ করতে হবে (বৃহত ইনপুটগুলির জন্য অনেকগুলি ডেটার অংশের আকারের চেয়ে ছোট ইনপুটগুলির সম্ভাবনা)। তারপরে আপনাকে প্রতিটি রাজ্যের জন্য পুনরাবৃত্তিটি বিপরীত করতে হবে। এখন, ব্যাখ্যা কেন এই খুব কঠিন, অনুমান করার চেষ্টা কল্পনা aএবং bনিম্নলিখিত সূত্র থেকে: 10 = a + b। এখানে 10 টি ইতিবাচক সমন্বয় রয়েছে aএবং bএটি কাজ করতে পারে। এখন যে একগুচ্ছ সময় লুপ:tmp = a + b; a = b; b = tmp। Ite৪ টি পুনরাবৃত্তির জন্য, আপনার চেষ্টা করার জন্য 10 ^ 64 এর বেশি সম্ভাবনা রয়েছে। এবং এটি কেবল একটি সরল সংযোজন যেখানে কিছু রাজ্য পুনরাবৃত্তি থেকে পুনরাবৃত্তি পর্যন্ত সংরক্ষণ করা হয়। রিয়েল হ্যাশ ফাংশনগুলি 1 টিরও বেশি অপারেশন করে (MD5 4 রাষ্ট্রের ভেরিয়েবলের উপরে প্রায় 15 টি অপারেশন করে)। এবং যেহেতু পরবর্তী পুনরাবৃত্তিটি পূর্বের অবস্থার উপর নির্ভর করে এবং বর্তমান অবস্থা তৈরিতে পূর্ববর্তীটি ধ্বংস হয়ে যায়, তাই প্রদত্ত আউটপুট রাষ্ট্রের (প্রতিটি পুনরাবৃত্তির জন্য কম নয়) যে ইনপুট রাষ্ট্রটি নির্ধারণ করা হয়েছিল তা নির্ধারণ করা সবই অসম্ভব। একত্রিত করুন যে বিপুল সংখ্যক সম্ভাবনার সাথে জড়িত রয়েছে, এবং একটি এমডি 5 ডিকোডিংয়ের ফলে নিকটতম সীমাহীন (তবে অসীম নয়) সংস্থান রয়েছে। এত সম্পদ যে এটি '

এনক্রিপশন ফাংশন

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

ব্যবহারের ক্ষেত্রে

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

আপনি ইনপুট ডেটার বৈধতা যাচাই করার সময় একটি হ্যাশ ফাংশন ব্যবহার করুন। এটি তাদের জন্য ডিজাইন করা হয়েছে। আপনার কাছে যদি 2 টি ইনপুট থাকে এবং সেগুলি একই কিনা তা পরীক্ষা করতে চান, একটি হ্যাশ ফাংশন দিয়ে উভয়ই চালান। সংঘর্ষের সম্ভাবনাটি ছোট ইনপুট আকারের (একটি ভাল হ্যাশ ফাংশন ধরে) জন্য জ্যোতির্বিজ্ঞানগতভাবে কম। এজন্য এটি পাসওয়ার্ডের জন্য প্রস্তাবিত। 32 টি অক্ষর পর্যন্ত পাসওয়ার্ডের জন্য, এমডি 5 এর আউটপুট স্পেসের 4 গুণ বেশি। SHA1 এর আউটপুট স্পেসের প্রায় 6 গুণ (প্রায়)। SHA512 এর আউটপুট স্পেস প্রায় 16 গুণ রয়েছে। পাসওয়ার্ডটি কী ছিল তা আপনি সত্যিই যত্নশীল হন না, এটি সংরক্ষণ করা শৃঙ্খলার মতো হয়ে থাকলে আপনার যত্নশীল। এজন্য আপনার পাসওয়ার্ডের জন্য হ্যাশ ব্যবহার করা উচিত।

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

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

পাসওয়ার্ডগুলির জন্য হ্যাশগুলিতে একটি নোট:

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

লবণ যুক্ত করা বিষয়গুলিকে সহায়তা করে কারণ এটি হ্যাশটিতে কিছুটা অজানা ডেটা যুক্ত করে। সুতরাং মেলে এমন কিছু আবিষ্কার করার পরিবর্তে md5(foo), তাদের এমন কিছু সন্ধান করা প্রয়োজন md5(foo.salt)যা জ্ঞাত লবণের সাথে যুক্ত হয়ে যায় (যা করা খুব বেশি কঠিন)। তবে এটি এখনও গতির সমস্যার সমাধান করতে পারে না কারণ তারা যদি লবণের বিষয়টি জানেন তবে এটি অভিধানটি চালানোর বিষয় মাত্র।

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

var hash = password + salt;
for (var i = 0; i < 5000; i++) {
    hash = sha512(hash + password + salt);
}

অন্যান্য, এই ধরনের হিসাবে আরো মান বাস্তবায়নের হয় PBKDF2 , BCrypt । তবে এই কৌশলটি বেশ কয়েকটি সুরক্ষা সম্পর্কিত সিস্টেম (যেমন পিজিপি, ডাব্লুপিএ, অ্যাপাচি এবং ওপেনএসএসএল) ব্যবহার করে।

নীচের লাইন, hash(password)যথেষ্ট ভাল না। hash(password + salt)ভাল, তবে এখনও যথেষ্ট ভাল নয় ... আপনার পাসওয়ার্ডের হ্যাশগুলি উত্পাদন করতে একটি প্রসারিত হ্যাশ প্রক্রিয়া ব্যবহার করুন ...

তুচ্ছ স্ট্রেচিংয়ের উপর অন্য একটি নোট

কোনও পরিস্থিতিতে কোনও হ্যাশের আউটপুট সরাসরি হ্যাশ ফাংশনে ফিড করবেন না :

hash = sha512(password + salt); 
for (i = 0; i < 1000; i++) {
    hash = sha512(hash); // <-- Do NOT do this!
}

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

hash1 = sha1(password + salt);

এখন, hash10.001% এর সংঘর্ষের সম্ভাবনা রয়েছে। কিন্তু যখন আমরা পরবর্তী কি hash2 = sha1(hash1);, সব দুর্ঘটনায় hash1স্বয়ংক্রিয়ভাবে দুর্ঘটনায় হয়েhash2 । সুতরাং এখন, আমাদের কাছে হ্যাশ 1 এর হার 0.001% এ আছে এবং দ্বিতীয় sha1()কলটি এতে যোগ করে। সুতরাং, এখন hash20.002% এর সংঘর্ষের সম্ভাবনা রয়েছে। যে দ্বিগুণ সম্ভাবনা দ্বিগুণ! প্রতিটি পুনরাবৃত্তি 0.001%ফলাফলের সাথে সংঘর্ষের আরেকটি সুযোগ যুক্ত করবে । সুতরাং, 1000 পুনরাবৃত্তির সাথে, সংঘর্ষের সুযোগটি একটি তুচ্ছ 0.001% থেকে 1% এ চলে গেছে। এখন, অবক্ষয়টি লিনিয়ার, এবং প্রকৃত সম্ভাবনাগুলি অনেক কম, তবে এর প্রভাব একই (একক সংঘর্ষের সম্ভাবনার একটি অনুমান md5প্রায় 1 / (2 128 ) বা 1 / (3x10 38)। যদিও এটি ছোট মনে হচ্ছে, জন্মদিনের আক্রমণে এটি যতটা ছোট মনে হচ্ছে তেমন ধন্যবাদ নেই )।

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

hash = sha512(password + salt);
for (i = 0; i < 1000; i++) {
    hash = sha512(hash + password + salt);
}

নেটিভ sha512ফাংশন হিসাবে সংঘর্ষের একই সুযোগ রয়েছে । যা আপনি চান। পরিবর্তে এটি ব্যবহার করুন।


30
এটা খুব খারাপ, লিঙ্কডইন এ প্রোগ্রামারদের এই আগে তারা unsalted SHA1 এ হ্যাশ যেমন পাসওয়ার্ড সঞ্চিত পড়তেন না ... money.cnn.com/2012/06/06/technology/linkedin-password-hack/...
এরিক জে

2
@ পেসারিয়র: এটি হ্যাশিংয়ের উপরেও কিছুটা জোর দেয়। এটি পাসওয়ার্ড হ্যাশিংয়ে বিশেষত ... বিস্তারিতভাবে যায় ...
মিনিটে ইরকম্যাক্সেল

1
আমি বুঝতে পারি না যে একই আউটপুটটির ফলে একাধিক কী থাকতে পারে তবে এটি কীভাবে 1 থেকে 1 ম্যাপিং করা যায়। ডিইএসের জন্য, মূল দৈর্ঘ্য 56 বিট এবং ব্লকের আকারগুলি 64 বিট। সুতরাং, 256 টি আলাদা কী কী একই আউটপুট ব্লকে ম্যাপ করতে পারে না?
mrQWERTY

1
@ রেনরেন 29 আপনি সঠিক. অনুশীলনে, পুরো সাইফার না সার্জেক্টিভ বা ইনজেক্টিভ। যাইহোক, প্রদত্ত কীটির জন্য, এটি লক্ষণীয় (প্রতিটি প্লেইন পাঠ্যের হুবহু একটি সিফারেক্সট থাকে) তবে প্রয়োজনীয়ভাবে ইনজেকশন নয় (প্রতিটি সম্ভাব্য সিফারেক্সটেক্সে ম্যাপিং নেই)। এটা কেন আমি বললেন একটি প্রদত্ত কী-এর জন্য 1: এটা সবসময় 1 এর । যদি একাধিক কী না থাকে যা একই আউটপুট ব্লকে আউটপুট দিতে পারে, তবে সাইফারটি কার্যকর হবে না যেহেতু সিফারেক্সট আপনাকে কীটি সম্পর্কে কিছু বলবে (এটি না জেনে)।
ইরকম্যাকেল

7
দুর্দান্ত উত্তর। আমার একমাত্র নিতপিকটি হ'ল তুচ্ছ স্ট্রেচিংয়ের অবক্ষয় রৈখিক হতে পারে না বা অবশেষে এটি 100% কেটে যাবে। আমি আপনার উদাহরণে .001% এর সাথে দ্বিতীয় ধাপটি .001 + (1 - 0.001) * .001 বা 0.001999 হওয়া উচিত বলে মনে করি।
অ্যালেক্সডেভ

160

একটি হ্যাশ ফাংশনটিকে একটি রুটি রুটি বেক করার সমান হিসাবে বিবেচনা করা যেতে পারে। আপনি ইনপুট (ময়দা, জল, খামির, ইত্যাদি ...) দিয়ে শুরু করবেন এবং হ্যাশ ফাংশনটি (মিশ্রণ + বেকিং) প্রয়োগ করার পরে, আপনি একটি আউটপুট দিয়ে শেষ করবেন: একটি রুটি af

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

বিভিন্ন ইনপুটগুলির বৈকল্পিক তাত্ত্বিকভাবে অভিন্ন রুটি উত্পাদন করবে (উদাহরণস্বরূপ 2 কাপ জল এবং 1 টি এসবিপি খামির ঠিক ২.১ কাপ এবং খামির 0.9tsbp হিসাবে একই রুটি উত্পাদন করে) তবে সেই রুটিগুলির একটি দেওয়া হলে আপনি বলতে পারবেন না ইনপুটগুলির কম্বো এটি তৈরি করেছিল।

অন্যদিকে এনক্রিপশনটি নিরাপদ আমানত বাক্স হিসাবে দেখা যেতে পারে। আপনি সেখানে যা কিছু রেখেছেন তা ফিরে আসে, যতক্ষণ না আপনি কীটি প্রথম স্থানটিতে লক করে রেখেছিলেন। এটি একটি প্রতিসম অপারেশন। একটি কী এবং কিছু ইনপুট দেওয়া হয়েছে, আপনি একটি নির্দিষ্ট আউটপুট পাবেন। সেই আউটপুট এবং একই কীটি দেওয়া, আপনি মূল ইনপুটটি ফিরে পাবেন। এটি একটি 1: 1 ম্যাপিং।


2
আপনি সহজেই এটি প্রদর্শন করতে পারবেন না যে কোনও নির্দিষ্ট হ্যামবার্গার একটি নির্দিষ্ট গরু থেকে পুরোপুরি এসেছে, যা হ্যাশের একটি মৌলিক সম্পত্তি, তাই এটি একটি মজার ধারণা কিন্তু একটি ভয়ঙ্কর উপমা।
ব্যবহারকারী467257

1
@ ক্যাফ সত্যিই লোল এবং এটিতে একটি ক্লাসিক। যাইহোক, গাভীটি কখনওই বাজারে আসে না, এটি "ষাঁড়" যা ;-) গরু: দুধ। ষাঁড়: মাংস।
ফানকি চল্লিশ নিনার

1
এর পিছনে এই গল্পটি দুর্দান্ত সুস্বাদু মনে হচ্ছে।
সাইটলিজ

44

আপনি যখন আসল ইনপুটটি ফিরে পেতে সক্ষম হবেন না তখন হ্যাশগুলি ব্যবহার করুন, যখন করবেন তখন এনক্রিপশন ব্যবহার করুন।

হ্যাশগুলি কিছু ইনপুট নেয় এবং এটিকে কিছু বিটগুলিতে পরিণত করে (সাধারণত একটি সংখ্যা হিসাবে বিবেচনা করা হয়, যেমন 32 বিট পূর্ণসংখ্যার মতো, 64 বিট পূর্ণসংখ্যা ইত্যাদি)। একই ইনপুট সর্বদা একই হ্যাশ উত্পাদন করবে, তবে আপনি প্রাথমিকভাবে প্রক্রিয়াটির তথ্য হারাবেন যাতে আপনি নির্ভরযোগ্যভাবে আসল ইনপুটটি পুনরুত্পাদন করতে পারবেন না (তবে এতে কয়েকটি সতর্কতা রয়েছে)।

এনক্রিপশন মূলত আপনি এনক্রিপশন ফাংশনটিতে রেখে সমস্ত তথ্য সংরক্ষণ করে, কারও জন্য নির্দিষ্ট কী না রেখে মূল ইনপুটটিতে ফিরে যাওয়া শক্ত (আদর্শভাবে অসম্ভব) করে তোলে।

হ্যাশিংয়ের সহজ উদাহরণ

কেন হ্যাশিং (সাধারণ ক্ষেত্রে) আসল ইনপুটটি ফিরে পেতে পারে তা বুঝতে আপনাকে সহায়তা করার জন্য এখানে একটি তুচ্ছ উদাহরণ's বলুন আমি একটি 1-বিট হ্যাশ তৈরি করছি। আমার হ্যাশ ফাংশনটি ইনপুট হিসাবে কিছুটা স্ট্রিং নেয় এবং ইনপুট স্ট্রিংটিতে বিট সংখ্যক সেট করা থাকলে হ্যাশটিকে 1 তে সেট করে, অন্যথায় 0 যদি বিজোড় সংখ্যা হত।

উদাহরণ:

Input    Hash
0010     0
0011     1
0110     1
1000     0

মনে রাখবেন যে অনেকগুলি ইনপুট মান রয়েছে যার ফলস্বরূপ 0 এর একটি হ্যাশ হয় এবং এর ফলে অনেকগুলি 1 এর হ্যাশ হয় you আপনি যদি জানেন যে হ্যাশটি 0 হয় তবে আপনি বুঝতে পারবেন না যে মূল ইনপুটটি কী ছিল।

যাইহোক, এই 1-বিট হ্যাশটি হুবহু স্বীকৃত নয় ... প্যারিটি বিটটি দেখুন

এনক্রিপশনের সাধারণ উদাহরণ

আপনি কোনও সরল অক্ষরের বিকল্প ব্যবহার করে পাঠ্য এনক্রিপ্ট করতে পারেন, ইনপুটটি A হলে আপনি বি লিখেছেন the আবার লিখুন।

Input   Encrypted
CAT     DBU
ZOO     APP

সহজ হ্যাশ উদাহরণের মতো, এই জাতীয় এনক্রিপশন historতিহাসিকভাবে ব্যবহৃত হয়েছে


এটি লক্ষণীয় যে "এনক্রিপশন" স্বতন্ত্র এনক্রিপশন বোঝায় এবং উপরের উদাহরণে সিজার সাইফারের মতো দুর্বল এনক্রিপশন দিয়ে বিভ্রান্ত হওয়া উচিত নয়।
ফ্যাক্স

@ ফ্যাক্স হ্যাঁ, তবে যা শক্তিশালী এনক্রিপশন গঠন করে তা যুগে যুগে চলন্ত বার হয়ে দাঁড়িয়েছে। জার্মান ডাব্লুডব্লিউআইআই এনিগমা মেশিনটি ক্র্যাক করা প্রায় অসম্ভব ছিল (এটি সম্পর্কে দুর্দান্ত সিনেমা আছে)। আজ, আপনার স্মার্ট ঘড়িটি সহজেই এটিকে ক্র্যাক করতে পারে। এমডি 5 এর মতো একসময় ডিইএসকে শক্তিশালী মনে করা হত। আজকের শক্তিশালী এনক্রিপশন দুর্দশাগ্রস্ত ভবিষ্যতে কোয়ান্টাম কম্পিউটিং কৌশলগুলির সহজ শিকারে পড়ার হুমকি দেয়।
এরিক জে

নিশ্চিতভাবেই, এবং ক্রিপ্টোগ্রাফির বিষয়ে পরামর্শ দেয় এমন পোস্ট এবং নিবন্ধগুলির তারিখগুলি পরীক্ষা করা সবসময় ভাল ধারণা। যে হচ্ছে বললেন, আমি নিশ্চিত সিজার সাইফার দুর্বল মনে করা হত এমনকি 2011 প্রশংসনীয় আছি
ফ্যাক্স

39

হ্যাশিং এবং এনক্রিপশন / ডিক্রিপশন কৌশলগুলির বেসিক ওভারভিউ।

হ্যাশ:

আপনি যদি হ্যাশ কোনো প্লেইন টেক্সট আবার আপনাকে কুচি-কুচি করিয়া কাটা বস্তু লেখা থেকে একই প্লেইন টেক্সট পেতে পারে না । সহজভাবে, এটি একমুখী প্রক্রিয়া।

হ্যাশ


এনক্রিপশন এবং ডিক্রিপশন:

আপনি যদি এনক্রিপ্ট কোনো প্লেইন টেক্সট একটি কী দিয়ে আবার আপনি একই প্লেইন টেক্সট পেতে পারেন করে ডিক্রিপশন একই (symetric) এনক্রিপটেড টেক্সট / diffrent (asymentric) কী করে।

এনক্রিপশন এবং ডিক্রিপশন


আপডেট: সম্পাদিত প্রশ্নে উল্লিখিত পয়েন্টগুলিকে সম্বোধন করতে।

1. হ্যাশ বনাম এনক্রিপশন কখন ব্যবহার করবেন

কাউকে ফাইল পাঠাতে চাইলে হ্যাশিং দরকারী। তবে আপনি আশঙ্কা করছেন যে অন্য কেউ ফাইলটি আটকাতে এবং এটি পরিবর্তন করতে পারে। আপনি যদি হ্যাশ মান সর্বজনীনভাবে পোস্ট করেন তবে প্রাপক এটি সঠিক ফাইল তা নিশ্চিত করতে পারে way এইভাবে প্রাপক প্রাপ্ত ফাইলটির হ্যাশ মানটি গণনা করতে এবং এটি হ্যাশ মানের সাথে মেলে কিনা তা পরীক্ষা করতে পারে।

যদি আপনি বলেন কারও কাছে প্রেরণের জন্য কোনও বার্তা থাকে তবে এনক্রিপশনটি ভাল। আপনি বার্তাটি একটি কী দিয়ে এনক্রিপ্ট করেছেন এবং প্রাপকটি মূল বার্তাটি ফিরে পেতে একই (বা এমনকি কোনও আলাদা) কী দিয়ে ডিক্রিপ্ট করে। ক্রেডিট


২. কোনটি হ্যাশ বা এনক্রিপশন অ্যালগরিদমকে আলাদা করে তোলে (তাত্ত্বিক / গাণিতিক স্তর থেকে) অর্থাত্ হ্যাশগুলি অপরিবর্তনীয় করে তোলে (রংধনু গাছের সহায়তা ছাড়াই)

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

এনক্রিপশন / ডিক্রিপশন (বিপরীত):

সংযোজন :

4 + 3 = 7  

যোগফলটি যোগ করে এবং সংযোজনগুলির মধ্যে একটিকে বিয়োগ করে এটি বিপরীত হতে পারে

7 - 3 = 4     

গুণ :

4 * 5 = 20  

পণ্যটি গ্রহণ করে এবং কোনও একটির সাথে ভাগ করে এটি বিপরীত হতে পারে

20 / 4 = 5    

সুতরাং, এখানে আমরা সংযোজন / কারণগুলির মধ্যে একটি হ'ল একটি ডিক্রিপশন কী এবং ফলাফল (7,20) একটি বিস্ফোরিত পাঠ্য।


হ্যাশিং (প্রত্যাবর্তনযোগ্য নয়):

মডুলো বিভাগ :

22 % 7 = 1   

এটি বিপরীত হতে পারে না কারণ আপনি ভাগফল এবং ডিভিডেন্ডার (বা বিপরীতে) পুনর্গঠন করতে ডিভিডেন্ডের সাথে করতে পারেন এমন কোনও অপারেশন নেই।

আপনি কোথায় পূরণ করতে একটি অপারেশন খুঁজে পেতে পারেন? ' কে?

1  ?  7 = 22  
1  ?  22 = 7

সুতরাং হ্যাশ ফাংশনগুলিতে মডুলো বিভাগের মতোই গাণিতিক গুণ রয়েছে এবং তথ্যটি হারায়।

ক্রেডিট


26

আমার এক লাইনার ... সাধারণত সাক্ষাত্কার নীচের উত্তর চেয়েছিলেন।

হ্যাশিংয়ের এক উপায়। আপনি কোনও হ্যাশ কোড থেকে আপনার ডেটা / স্ট্রিং রূপান্তর করতে পারবেন না।

এনক্রিপশন 2 উপায় - আপনার কাছে কী থাকলে আপনি আবার এনক্রিপ্ট হওয়া স্ট্রিংটি ডিক্রিপ্ট করতে পারেন।


হে! এটি দুটি লাইন।
মার্ক স্টোর

17

একটি হ্যাশ ফাংশন একটি পরিবর্তনশীল-আকারের পাঠ্যের পরিমাণকে একটি নির্দিষ্ট আকারের পাঠ্যে পরিণত করে।

কাটা

সূত্র: https://en.wikedia.org/wiki/Hash_function


পিএইচপি-তে হ্যাশ ফাংশন

একটি হ্যাশ একটি স্ট্রিংকে হ্যাশ স্ট্রিনে পরিণত করে। নিচে দেখ.

হ্যাশ:

$str = 'My age is 29';
$hash = hash('sha1', $str);
echo $hash; // OUTPUT: 4d675d9fbefc74a38c89e005f9d776c75d92623e

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

DEHASH:

SHA1 হ'ল একমুখী হ্যাশ। যার অর্থ হল আপনি হ্যাশটি ডিশ করতে পারবেন না।

তবে, আপনি হ্যাশটিকে জোর-জবরদস্তি করতে পারেন। দয়া করে দেখুন: https://hashkiller.co.uk/sha1-decryPoint.aspx

MD5, অন্য হ্যাশ। একটি এমডি 5 ডিহেশার এই ওয়েবসাইটে পাওয়া যাবে: https://www.md5online.org/

হ্যাশগুলিতে আক্রমণাত্মক আক্রমণকে বাধা দেওয়ার জন্য একটি লবণ দেওয়া যেতে পারে। পিএইচপি-তে আপনি password_hash()একটি পাসওয়ার্ড হ্যাশ তৈরি করতে ব্যবহার করতে পারেন । ফাংশনটি password_hash()স্বয়ংক্রিয়ভাবে একটি লবণ তৈরি করে। একটি পাসওয়ার্ড হ্যাশ (লবণ সহ) ব্যবহার করে একটি পাসওয়ার্ড যাচাই করতে password_verify()

// Invoke this little script 3 times, and it will give you everytime a new hash
$password = '1234';  
$hash = password_hash($password, PASSWORD_DEFAULT);  

echo $hash; 
// OUTPUT 

$2y$10$ADxKiJW/Jn2DZNwpigWZ1ePwQ4il7V0ZB4iPeKj11n.iaDtLrC8bu 

$2y$10$H8jRnHDOMsHFMEZdT4Mk4uI4DCW7/YRKjfdcmV3MiA/WdzEvou71u 

$2y$10$qhyfIT25jpR63vCGvRbEoewACQZXQJ5glttlb01DmR4ota4L25jaW

একটি পাসওয়ার্ড আরও একটি হ্যাশ দ্বারা প্রতিনিধিত্ব করা যেতে পারে। আপনি যখন ব্যবহার করে বিভিন্ন পাসওয়ার্ড হ্যাশ দিয়ে পাসওয়ার্ড যাচাই করেন password_verify(), তখন পাসওয়ার্ডটি একটি বৈধ পাসওয়ার্ড হিসাবে স্বীকৃত হবে।

$password = '1234';  

$hash = '$2y$10$ADxKiJW/Jn2DZNwpigWZ1ePwQ4il7V0ZB4iPeKj11n.iaDtLrC8bu';  
var_dump( password_verify($password, $hash) );  

$hash = '$2y$10$H8jRnHDOMsHFMEZdT4Mk4uI4DCW7/YRKjfdcmV3MiA/WdzEvou71u';  
var_dump( password_verify($password, $hash) );  

$hash = '$2y$10$qhyfIT25jpR63vCGvRbEoewACQZXQJ5glttlb01DmR4ota4L25jaW';  
var_dump( password_verify($password, $hash) );

// OUTPUT 

boolean true 

boolean true 

boolean true




একটি এনক্রিপশন ফাংশন একটি এনক্রিপশন কী এবং তার বিপরীতে ব্যবহার করে একটি পাঠ্যকে একটি অযৌক্তিক সাইফারেক্সটে রূপান্তর করে। এখানে চিত্র বর্ণনা লিখুন

সূত্র: https://en.wikedia.org/wiki/ এনক্রিপশন


পিএইচপি এ এনক্রিপশন

আসুন এমন কিছু পিএইচপি কোডে ডুব দিন যা এনক্রিপশন পরিচালনা করে।

--- ম্যাক্রিপ্ট এক্সটেনশন ---

এনক্রিপ্ট করুন:

$cipher = MCRYPT_RIJNDAEL_128;
$key = 'A_KEY';
$data = 'My age is 29';
$mode = MCRYPT_MODE_ECB;

$encryptedData = mcrypt_encrypt($cipher, $key , $data , $mode);
var_dump($encryptedData);

//OUTPUT:
string '„Ùòyªq³¿ì¼üÀpå' (length=16)

ডিক্রিপ্ট:

$decryptedData = mcrypt_decrypt($cipher, $key , $encryptedData, $mode);
$decryptedData = rtrim($decryptedData, "\0\4"); // Remove the nulls and EOTs at the END
var_dump($decryptedData);

//OUTPUT:
string 'My age is 29' (length=12)

--- ওপেনএসএল এক্সটেনশন ---

ম্যাক্রিপ্টের বহিরাগত অবস্থানটি 7.1-এ অবচিত করা হয়েছিল। এবং পিএইচপি 7.2 এ সরানো হয়েছে। ওপেনএসএসএল এক্সটেনশন পিএইচপি 7 ব্যবহার করা উচিত should নীচের কোড স্নিপেটগুলি দেখুন:

$key = 'A_KEY';
$data = 'My age is 29';

// ENCRYPT
$encryptedData = openssl_encrypt($data , 'AES-128-CBC', $key, 0, 'IV_init_vector01');
var_dump($encryptedData);

// DECRYPT    
$decryptedData = openssl_decrypt($encryptedData, 'AES-128-CBC', $key, 0, 'IV_init_vector01');
var_dump($decryptedData);

//OUTPUT
string '4RJ8+18YkEd7Xk+tAMLz5Q==' (length=24)
string 'My age is 29' (length=12)

মনে রাখবেন যে পিএইচপি এমক্রিপ্ট এখনই অবহেলিত হয়েছে (এর সাথে আমার কিছু থাকতে পারে) এবং এসএএএ -1, এমডি 5 এবং ইসিবি সবাই নিরাপদ হিসাবে বিবেচিত হয়। A_KEYহয় না কোনো aes / Rijndael-128 চাবি; এটি একটি পাসওয়ার্ড, মিত্রের চাবি নয়।
মার্টেন বোদেউয়েস

@ মার্টেনবোডউয়েস হ্যাঁ এটি সত্য। ওপেনএসএসএল এখন ফ্যাড। php.net/manual/en/book.openssl.php
জুলিয়ান

10

প্রতিসম এনক্রিপশন:

প্রতিসম এনক্রিপশনকে ভাগ করা কী বা ভাগ করা গোপন এনক্রিপশন হিসাবেও উল্লেখ করা যেতে পারে। প্রতিসম এনক্রিপশনে ট্র্যাফিক এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য একটি সিঙ্গল কী ব্যবহার করা হয়।

এখানে চিত্র বর্ণনা লিখুন

অসমমিতি এনক্রিপশন:

অসমমিতিক এনক্রিপশনটি পাবলিক-কী ক্রিপ্টোগ্রাফি হিসাবেও পরিচিত। অসমমিতিক এনক্রিপশন মূলত যে দুটি কী ব্যবহার করা হয় সেগুলিতে প্রতিসম এনক্রিপশন থেকে পৃথক: একটি এনক্রিপশনের জন্য এবং একটি ডিক্রিপশনের জন্য। সবচেয়ে সাধারণ অসমমিতিক এনক্রিপশন অ্যালগরিদম হ'লRSA

প্রতিসম এনক্রিপশনের সাথে তুলনা করে, অসমমিতিক এনক্রিপশন একটি উচ্চ গণনামূলক বোঝা চাপায় এবং অনেক ধীর হতে থাকে। সুতরাং, এটি সাধারণত পেডলোড ডেটা সুরক্ষার জন্য নিযুক্ত করা হয় না। পরিবর্তে, এর প্রধান শক্তি হ'ল একটি সুরক্ষিত মাধ্যম (উদাহরণস্বরূপ, ইন্টারনেট) এর মাধ্যমে সুরক্ষিত চ্যানেল স্থাপনের দক্ষতা। এটি সর্বজনীন কীগুলির বিনিময় দ্বারা সম্পন্ন হয়, যা কেবলমাত্র ডেটা এনক্রিপ্ট করতে ব্যবহৃত হতে পারে। পরিপূরক ব্যক্তিগত কী, যা কখনই ভাগ হয় না, ডিক্রিপ্ট করার জন্য ব্যবহৃত হয়।

এখানে চিত্র বর্ণনা লিখুন

হ্যাশ:

অবশেষে, হ্যাশিং হ'ল একধরণের ক্রিপ্টোগ্রাফিক সুরক্ষা যা এনক্রিপশন থেকে পৃথক। এনক্রিপশন হ'ল একটি দুটি পদক্ষেপ প্রক্রিয়া যা প্রথমে এনক্রিপ্ট এবং তারপরে একটি বার্তা ডিক্রিপ্ট করার জন্য ব্যবহৃত হয়, হ্যাশিং একটি বার্তাটিকে একটি অপরিবর্তনীয় স্থির দৈর্ঘ্যের মান বা হ্যাশে কনডেন্স করে। নেটওয়ার্কিংয়ে দেখা সবচেয়ে সাধারণ দুটি হ্যাশিং অ্যালগরিদম হ'ল MD5এবং SHA-1

এখানে চিত্র বর্ণনা লিখুন

এখানে আরও পড়ুন: http://packetLive.net/blog/2010/nov/23/symmetric-asymmetric-encryption-hashing/


দুঃখিত, আমি একটি সুরক্ষিত নব্বই, তবে আপনি কি আরও "দয়া করে পেওলড ডেটা সুরক্ষার জন্য নিযুক্ত" এর অর্থ ব্যাখ্যা করতে পারেন?
আব্দুল

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

5
  1. আপনার যখন কেবল একপথে যেতে হবে তখন হ্যাশগুলি ব্যবহার করুন। উদাহরণস্বরূপ, কোনও সিস্টেমে পাসওয়ার্ডের জন্য আপনি হ্যাশিং ব্যবহার করেন কারণ আপনি কেবল যাচাই করতে পারবেন যে কোনও ব্যবহারকারী প্রবেশের পরে, হ্যাশিংয়ের পরে, আপনার সংগ্রহস্থলের মানটির সাথে মেলে। এনক্রিপশন সহ, আপনি দুটি উপায় যেতে পারেন।

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


4

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

অনেকগুলি হ্যাশ ফাংশন আসলে এনক্রিপশন অ্যালগরিদমগুলি (বা এনক্রিপশন অ্যালগরিদমগুলির প্রিমিটিভস ব্যবহার করে example উদাহরণস্বরূপ, এসএএচএ -3 প্রার্থী স্কেইন প্রতিটি ব্লকের প্রক্রিয়া করার জন্য অন্তর্নিহিত পদ্ধতি হিসাবে থ্রিফিশ ব্যবহার করে The নির্ধারিতভাবে নির্ধারিত দৈর্ঘ্যে একত্রিত করা


4

যখন তথ্য প্রেরণের জন্য সুরক্ষার কথা আসে অর্থাত দ্বি-মুখী যোগাযোগ আপনি এনক্রিপশন ব্যবহার করেন ll সমস্ত এনক্রিপশনের জন্য একটি কী প্রয়োজন

যখন অনুমোদনের বিষয়টি আসে আপনি হ্যাশিং ব্যবহার করেন has হ্যাশিংয়ের কোনও কী নেই

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

কেন হ্যাশিং অপরিবর্তনীয়:

হ্যাশিং প্রত্যাবর্তনযোগ্য নয় কারণ ইনপুট থেকে হ্যাশ ম্যাপিং 1-থেকে -1 নয়। একই হ্যাশ মানটিতে দুটি ইনপুট মানচিত্র থাকা সাধারণত একটি "হ্যাশ সংঘর্ষ" হিসাবে পরিচিত। সুরক্ষা উদ্দেশ্যে, "ভাল" হ্যাশ ফাংশনের অন্যতম বৈশিষ্ট্য হ'ল সংঘর্ষগুলি ব্যবহারিক ব্যবহারে বিরল।


1
"হ্যাশিং প্রত্যাবর্তনযোগ্য নয় কারণ ইনপুট-টু-হ্যাশ ম্যাপিংটি 1-থেকে -1 নয়", ধন্যবাদ, আমি মনে করি এনক্রিপশন থেকে হ্যাশকে আলাদা করার ক্ষেত্রে এটি একটি খুব গুরুত্বপূর্ণ বিষয়! :)
কেনি কেসন

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

-2

ক্রিপ্টোগ্রাফি সংখ্যা এবং স্ট্রিং নিয়ে কাজ করে। মূলত পুরো মহাবিশ্বের প্রতিটি ডিজিটাল জিনিস সংখ্যা। আমি যখন সংখ্যা বলি, এর 0 এবং 1। আপনি কী জানেন সেগুলি বাইনারি হয়। আপনি স্ক্রিনে যে চিত্রগুলি দেখেন, আপনার ইয়ারফোনের মাধ্যমে আপনি যে সঙ্গীত শুনেন, সেগুলি সব বাইনারি। কিন্তু আমাদের কান ও চোখ বাইনারি ঠিক বুঝতে পারবে না? কেবল মস্তিষ্ক এটি বুঝতে পারে এবং এটি বাইনারিগুলি বুঝতে পারলেও এটি বাইনারি উপভোগ করতে পারে না। সুতরাং আমরা বাইনারিগুলি মানুষের বোধগম্য ফরম্যাটে যেমন এমপি 3, জেপিজি, ইত্যাদিতে রূপান্তর করি। প্রক্রিয়া হিসাবে শব্দটি যাক এনকোডিং । এটি দ্বিমুখী প্রক্রিয়া এবং সহজেই তার মূল ফর্মটিতে ডিকোড করা যায়।

হ্যাশ

হ্যাশিং হ'ল আরেকটি ক্রিপ্টোগ্রাফি কৌশল যেখানে একবারে অন্য কোনও রূপে রূপান্তরিত ডেটা কখনই ফিরে পাওয়া যায় না। লেম্যানের মেয়াদে, ডি-হ্যাসিং নামে কোনও প্রক্রিয়া নেই । শ্যা -512, এমডি 5 ইত্যাদি কাজ করার জন্য অনেকগুলি হ্যাশ ফাংশন রয়েছে।

যদি মূল মানটি পুনরুদ্ধার করা যায় না, তবে আমরা এটি কোথায় ব্যবহার করব? পাসওয়ার্ড! আপনি যখন নিজের মোবাইল বা পিসির জন্য একটি পাসওয়ার্ড সেট আপ করেন, তখন আপনার পাসওয়ার্ডের একটি হ্যাশ তৈরি করে একটি নিরাপদ স্থানে সংরক্ষণ করা হয়। আপনি যখন পরের বার লগইন করার চেষ্টা করবেন তখন প্রবেশ করা স্ট্রিংটি আবার একই অ্যালগোরিদম (হ্যাশ ফাংশন) দিয়ে হ্যাশ করা হবে এবং আউটপুটটি সঞ্চিত মানের সাথে মিলবে। যদি এটি একই হয়, আপনি লগ ইন করুন Otherwise নইলে আপনাকে বাইরে ফেলে দেওয়া হবে।

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

তারপরে এনক্রিপশন রয়েছে

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

প্রতিসম কী কী এনক্রিপশন

আমি চেষ্টা করছিলাম যতটা সম্ভব সহজসাধ্য রাখার জন্য। সুতরাং, আসুন শিফট অ্যালগরিদমের মাধ্যমে প্রতিসম এনক্রিপশনটি বুঝতে পারি। এই অ্যালগরিদম অক্ষরগুলি বাম বা ডানে স্থানান্তরিত করে বর্ণমালা এনক্রিপ্ট করতে ব্যবহৃত হয়। আসুন একটি স্ট্রিং CRYPTO নিই এবং একটি নম্বর 33 বিবেচনা করি। তারপরে, CRYPTO এর এনক্রিপ্ট করা ফর্ম্যাটটি FUBSWR হবে। তার মানে প্রতিটি অক্ষর 3 টি জায়গায় ডানদিকে স্থানান্তরিত। এখানে, শব্দ ক্রিপ্টো বলা হয় প্লেইন , আউটপুট FUBSWR বলা হয় সাইফার , মান +3 বলা হয় এনক্রিপশন কী (প্রতিসম চাবি) এবং পুরো প্রক্রিয়া একটি হল । এটি প্রাচীনতম এবং মৌলিক প্রতিসাম্য কী এনক্রিপশন অ্যালগরিদম এবং এর প্রথম ব্যবহার জুলিয়াস সিজারের সময় রিপোর্ট করা হয়েছিল। সুতরাং, এটি তার নামকরণ করা হয়েছিল এবং এটি বিখ্যাতসিজার সাইফার । যে কেউ এনক্রিপশন কীটি জানেন এবং সিজারের অ্যালগরিদমের বিপরীত প্রয়োগ করতে পারেন এবং আসল সরলখাদকটি পুনরুদ্ধার করতে পারেন। সুতরাং এটিকে একটি প্রতিসম এনক্রিপশন বলা হয় । সাইফার

অসমমিতিক কী এনক্রিপশন

আমরা জানি যে, প্রতিসামগ্রী এনক্রিপশনে একই কীটি এনক্রিপশন এবং ডিক্রিপশন উভয়ের জন্য ব্যবহৃত হয়। একবার কীটি চুরি হয়ে গেলে, সমস্ত ডেটা চলে যায়। এটি একটি বিশাল ঝুঁকি এবং আমাদের আরও জটিল কৌশল প্রয়োজন। 1976 সালে হুইটফিল্ড ডিফি এবং মার্টিন হেলম্যান প্রথম অসমমিতিক এনক্রিপশন ধারণাটি প্রকাশ করেন এবং অ্যালগরিদমটি ডিফি-হেলম্যান কী এক্সচেঞ্জ নামে পরিচিত ছিল । তারপরে 1978 সালে, রন রিভেস্ট, আদি শামির এবং এমআইটির লিওনার্ড অ্যাডলম্যান আরএসএ প্রকাশ করেছিলেন অ্যালগরিদম । এগুলিকে অসীম ক্রিপ্টোগ্রাফির ভিত্তি হিসাবে বিবেচনা করা যেতে পারে।

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

উত্স: ডামি অংশ 1 এর জন্য এসএসএল / টিএলএস: সাইফারসাইট, হ্যাশিং, এনক্রিপশন | ডাব্লুএসটি ( https://www.wst.space/ssl-part1-ciphersuite-hashing-encryption/ )


-3

এনক্রিপশন এনক্রিপশনের উদ্দেশ্য হ'ল এটি গোপন রাখতে ডেটা রুপান্তর করা (কাউকে এমন একটি গোপন পাঠ্য প্রেরণ করা যা তারা কেবলমাত্র পড়তে পারে, ইন্টারনেটের মাধ্যমে পাসওয়ার্ড প্রেরণ করতে পারে)।

ব্যবহারযোগ্যতার দিকে মনোনিবেশ করার পরিবর্তে লক্ষ্য হ'ল ডেটা প্রেরণটি গোপনে প্রেরণ করা যায় এবং এটি কেবলমাত্র আপনি যাকে প্রেরণ করেছিলেন তা কেবল ব্যবহারকারী দ্বারাই দেখা যায়।

এটি ডেটাটিকে অনন্য প্যাটার্নে রূপান্তর করার অন্য ফর্ম্যাটে এনক্রিপ্ট করে এটি গোপন কী দিয়ে এনক্রিপ্ট করা যেতে পারে এবং যে ব্যবহারকারীদের গোপন কী রয়েছে তারা প্রক্রিয়াটিকে বিপরীতক্রমে বার্তা দেখতে সক্ষম করতে পারে। যেমন (AES, পটকা মাছ, আরএসএ)

এনক্রিপশনটি সহজেই এই FhQp6U4N28GITVGjdt37hZN এর মতো দেখাতে পারে

হ্যাশিং প্রযুক্তিগতভাবে আমরা এটি বলতে পারি হিসাবে এটি একটি সালিসি ইনপুট লাগে এবং একটি নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং উত্পাদন করে।

এর মধ্যে সর্বাধিক গুরুত্বপূর্ণ বিষয় হ'ল আপনি আউটপুট থেকে ইনপুটটিতে যেতে পারবেন না t এটি শক্তিশালী আউটপুট উত্পাদন করে যা প্রদত্ত তথ্যটি পরিবর্তন করা হয়নি। প্রক্রিয়াটি হ'ল একটি ইনপুট নেওয়া এবং এটি হ্যাশ করা এবং তারপরে প্রেরকের প্রাইভেট কী সহ প্রেরণকারী প্রেরণের পরে তারা প্রেরকের পাবলিক কী সহ এটি যাচাই করতে পারে।

যদি হ্যাশটি ভুল হয় এবং হ্যাশের সাথে মেলে না তবে আমরা কোনও তথ্য দেখতে পাই না। যেমন (MD5, Sha .....)

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