পটভূমি
একটি এককালীন প্যাড হ'ল এনক্রিপশনের একটি ফর্ম যা সঠিকভাবে ব্যবহার করা হলে ক্র্যাক করা অসম্ভব প্রমাণিত হয়েছে।
এনক্রিপশনটি একটি সরল পঠন গ্রহণ করে (কেবলমাত্র অক্ষরের AZ সমন্বিত) এবং একই দৈর্ঘ্যে (কেবলমাত্র অক্ষরগুলি) এলোমেলো স্ট্রিং তৈরি করে। এই স্ট্রিংটি মূল হিসাবে কাজ করে। প্লেইনেক্সটেক্সের প্রতিটি অক্ষরকে কী-এর সাথে সংশ্লিষ্ট চরিত্রের সাথে যুক্ত করা হয়। সিফারটেক্সটটি নিম্নরূপে গণনা করা হয়েছে: প্রতিটি জুটির জন্য উভয় অক্ষরকে সংখ্যায় রূপান্তর করা হয় (এ = 0, বি = 1, ... জেড = 25)। দুটি সংখ্যা যোগ করা হয়েছে মডুলো 26. এই সংখ্যাটি একটি অক্ষরে ফিরে রূপান্তরিত হয়।
ডিক্রিপশন ঠিক এর বিপরীত। সিফারেক্সট এবং কী-এর অক্ষরগুলি সংযুক্ত করে সংখ্যায় রূপান্তরিত হয়। এরপরে চাবিটি সিফেরেক্সট মডিউল 26 থেকে বিয়োগ করা হয়, এবং ফলাফলটি আবার একটি অক্ষর এজেডে রূপান্তরিত হয়।
চ্যালেঞ্জ
আপনার চ্যালেঞ্জটি হ'ল সংক্ষিপ্ততম প্রোগ্রামটি লেখার জন্য যা উভয়ই এককালীন প্যাড এনক্রিপ্ট এবং ডিক্রিপ্ট করতে পারে।
ইনপুটটির প্রথম লাইনে (এসটিডিআইএন), হয় "এনক্রিপিটি" শব্দ বা "ডিক্রিওয়াইপিটি" শব্দটি থাকবে।
শব্দটি যদি এনক্রিপ্ট হয় তবে তার পরের লাইনটি প্লেইন টেক্সট হবে। আপনার প্রোগ্রামে দুটি লাইন আউটপুট করা উচিত (STDOUT- এ), প্রথমটি কী এবং দ্বিতীয়টি সিফারেক্সট।
শব্দটি ডিক্রিপ্ট হলে আপনার প্রোগ্রামটি আরও দুটি লাইন ইনপুট পাবে। প্রথম লাইনটি কী হবে এবং দ্বিতীয় লাইনটি হবে সাইফারটেক্সট। আপনার প্রোগ্রামটির একটি লাইন আউটপুট করা উচিত, এটি হবে সেই সরল পাঠ যা ডিক্রিপ্ট করা হয়েছে।
প্লেইন টেক্সট, সিফেরটেক্সট এবং কীতে সর্বদা বড় হাতের অক্ষর AZ থাকা উচিত। এগুলি সর্বদা একক লাইন থাকবে এবং এতে কোনও সাদা স্থান থাকবে না।
কীটি সর্বদা এলোমেলো হওয়া উচিত। এর বড় অংশগুলিকে রানের মধ্যে পুনরাবৃত্তি করা উচিত নয় এবং পাঠ্যের মধ্যে এমন কোনও নিদর্শন পাওয়া যাবেনা।
দুটি সহজ উদাহরণ:
ENCRYPT
HAPPYBIRTHDAY
>ABKJAQLRJESMG
>HBZYYRTICLVME
DECRYPT
ABKJAQLRJESMG
HBZYYRTICLVME
>HAPPYBIRTHDAY
>
প্রতিনিধিত্ব করে যা লাইন, আউটপুট হয় যাতে আপনি আউটপুট এই চিহ্নের প্রিন্ট করতে হবে না।
/dev/random
, haveged
) দেওয়া হয়েছে, বাইটগুলির সাথে অর্ডগুলি জোর করে এনক্রিপ্ট করুন এবং কী দিয়ে তাদের জিওর করে ডিক্রিপ্ট করুন। gist.github.com/5078264 কী বা এলোমেলোতা স্ট্ডিনের কাছ থেকে পড়া যায়, বার্তা বা সাইফেরেক্সট ফাইল নাম যুক্তি হতে পারে।
/dev/hwrng
, সিউডো র্যান্ডম ব্যবহারের পরিবর্তে (যা প্রযুক্তিগতভাবে এটি ভেঙে