সিকিউর হ্যাশ অ্যালগরিদম (SHA) ন্যাশনাল সিকিউরিটি এজেন্সি (NSA) দ্বারা উদ্ভাবিত হয়েছিল এবং 1993 সালে ন্যাশনাল ইনস্টিটিউট অফ স্ট্যান্ডার্ড অ্যান্ড টেকনোলজি (NIST)-এর মাধ্যমে ইউ.এস. ফেডারেল ইনফরমেশন প্রসেসিং স্ট্যান্ডার্ড (FIPS PUB 180) হিসাবে প্রকাশিত হয়েছিল৷
SHA MD4 অ্যালগরিদমের মতো অনুরূপ বিল্ডিং ব্লকগুলির উপর নির্ভর করে এবং ভাগ করে। SHA-এর ডিজাইন একটি নতুন প্রক্রিয়া চালু করেছে যা 16-শব্দের বার্তা ব্লক ইনপুটকে কম্প্রেশন ফাংশনে 80-শব্দ ব্লকে অন্যান্য জিনিসের মধ্যে বিকাশ করে।
SHA-এর প্রক্রিয়াকরণ নিম্নরূপ কাজ করে -
ধাপ 1 − প্যাডিং বিট যোগ করুন − মূল বার্তাটি প্যাড করা হয়েছে এবং এর সময়কাল 448 মডিউল 512-এর সাথে সামঞ্জস্যপূর্ণ। প্যাডিং ক্রমাগত সন্নিবেশ করা হয় যদিও বার্তাটির ইতিমধ্যেই কাঙ্ক্ষিত দৈর্ঘ্য রয়েছে। প্যাডিং-এ একটি একক 1 এর পরে 0 বিটের অপরিহার্য সংখ্যা রয়েছে৷
ধাপ 2 − দৈর্ঘ্য যোগ করুন − একটি 64-বিট ব্লক একটি স্বাক্ষরবিহীন 64-বিট পূর্ণসংখ্যা হিসাবে বিবেচিত হয় (প্রথমে সবচেয়ে প্রয়োজনীয় বাইট), এবং মূল বার্তার দৈর্ঘ্য নির্ধারণ করে (পদক্ষেপ 1 এ প্যাডিংয়ের আগে), বার্তাটিতে যোগ করা হয়। সম্পূর্ণ বার্তার দৈর্ঘ্য 512 এর গুণিতক।
ধাপ 3 −বাফার শুরু করুন − বাফারটিতে 32 বিটের পাঁচটি (5) রেজিস্টার রয়েছে যা A, B, C, D, এবং E দ্বারা নির্দেশিত। এই 160-বিট বাফারটি কম্প্রেশন ফাংশনের অস্থায়ী এবং চূড়ান্ত ফলাফলগুলিকে প্রভাবিত করতে ব্যবহার করা যেতে পারে। এই পাঁচটি রেজিস্টার নিম্নলিখিত 32-বিট পূর্ণসংখ্যাতে শুরু করা হয়েছে (হেক্সাডেসিমেল নোটেশনে)।
A =67 45 23 01
B =ef cd ab 89
C =98 ba dc fe
D =10 32 54 76
E =c3 d2 e1 f0
রেজিস্টার A, B, C, এবং D আসলে MD5 অ্যালগরিদমে ব্যবহৃত চারটি রেজিস্টারের মতই। কিন্তু SHA-1-এ, এই মানগুলি বড়-এন্ডিয়ান বিন্যাসে সংরক্ষিত হয়, যা সংজ্ঞায়িত করে যে শব্দের সবচেয়ে প্রয়োজনীয় বাইটটি নিম্ন-ঠিকানা বাইট অবস্থানে অবস্থিত। তাই আরম্ভের মান (হেক্সাডেসিমেল স্বরলিপিতে) নিম্নলিখিত হিসাবে ঘটে -
শব্দ A =67 45 23 01
শব্দ B =ef cd ab 89
শব্দ C =98 ba dc fe
শব্দ D =10 32 54 76
শব্দ E =c3 d2 e1 f0
পদক্ষেপ 4৷ − 512-বিট ব্লকে বার্তা প্রক্রিয়া করুন − কম্প্রেশন ফাংশনটি 20টি অনুক্রমিক ধাপে বিভক্ত যেখানে প্রক্রিয়াকরণের চারটি রাউন্ড রয়েছে যেখানে প্রতিটি রাউন্ড 20টি ধাপ নিয়ে গঠিত৷
চারটি রাউন্ড গঠনগতভাবে একে অপরের মতো একই পার্থক্য শুধুমাত্র প্রতিটি রাউন্ডের জন্য একটি আলাদা বুলিয়ান ফাংশন প্রয়োজন, যা এটি f1, f2, f3, f4 এবং চারটি একাধিক সংযোজন ধ্রুবক Kt (0 ≤t ≤79) হিসাবে সংজ্ঞায়িত করতে পারে যা বিবেচনাধীন ধাপের উপর ভিত্তি করে।
ধাপ 5 - আউটপুট − চূড়ান্ত 512-বিট বার্তা ব্লক টি প্রক্রিয়া করার পরে (মেসেজটি টি 512-বিট ব্লকে বিভক্ত করা হয়েছে) এবং এটি একটি 160-বিট বার্তা ডাইজেস্ট পেতে পারে।