নিম্নলিখিত স্পেসিফিকেশন প্রদত্ত ডেটা এনক্রিপ্ট এবং ডিক্রিপ্ট করার জন্য একটি প্রোগ্রাম বা ফাংশন (বা প্রোগ্রাম / ফাংশনগুলির সেট) লিখুন:
জোড়া লাগানো
প্রতিটি বাইট একে অপরের সাথে এক্সওআর-ইন করে ইনপুটটির একটি এক্সওআর হ্যাশ গণনা করুন।
এই হ্যাশটির মাধ্যমে ইনপুটটির প্রতিটি বাইট এক্সওআর করুন।
ফল চারটি বিট শিফট করুন।
এক্সওআর হ্যাশের প্রথম চারটি বিট দিয়ে বাম দিকে প্যাড করুন।
এক্সওআর হ্যাশের শেষ চারটি বিট দিয়ে ডানদিকে প্যাড করুন।
উদাহরণ
প্রদত্ত ইনপুট:
"G0lf"
(0x47306C66
)এক্সওআর হ্যাশ গণনা করুন:
0x47 ^ 0x30 ^ 0x6C ^ 0x66 = 0x7D
হ্যাশ দ্বারা প্রতি বাইট XOR:
0x3A4D111B
প্রত্যাশিত ফলাফল (শিফট এবং প্যাডের পরে):
"s¤Ñ\x11½"
(0x73A4D111BD
)
বিধি
আপনার প্রোগ্রাম / ফাংশনটি ইনপুট / আউটপুট প্রকৃত বাইট হিসাবে যতক্ষণ না আপনার পছন্দ মতো গল্ফিং ভাষা (স্ট্রিং, বাইট অ্যারে, ইত্যাদি) বোঝায় ততক্ষণ যা কিছু আউটপুট / আউটপুট পেতে পারে। উদাহরণস্বরূপ, আপনি একটি হেক্সিডেসিমাল স্ট্রিং আউটপুট নাও করতে পারেন।
এনক্রিপশন এবং ডিক্রিপশন পৃথক প্রোগ্রামে পৃথক করা যেতে পারে (স্কোর তাদের সম্মিলিত আকার হবে) বা একটি একক। একক পদ্ধতিগুলি এটি এনক্রিপ্ট করা বা ডিক্রিপ্ট করা উচিত কিনা এর জন্য একটি যুক্তি নিতে পারে।
এনক্রিপশনের জন্য ইনপুটটি কমপক্ষে 1 বাইট আকারের হতে পারে বলে আশা করা যায়।
ডিক্রিপশন জন্য ইনপুট কমপক্ষে 2 বাইট আশা করা যেতে পারে
মুদ্রণযোগ্য বাইটগুলি আউটপুট এড়িয়ে যাওয়ার দরকার নেই।