রবিবার, ১৮ ডিসেম্বর, ২০১৬

পাবলিক ও প্রাইভেট কি এনক্রিপশন


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

ক্রিপ্টোগ্রাফি কি?

আমরা অনেকেই ছোটবেলায় এই কাজ করেছি। যেমন TBLJC। এইটা কি?

বৃহস্পতিবার, ২৭ অক্টোবর, ২০১৬

পাইথন দিয়ে জিপির সিক্রেট অফার ডিকোড করে ফেলা

একদিন জিপির কাছ থেকে এমন একটা মেসেজ পেলাম


কি এইটা? সিক্রেট মেসেজ? কোন সিক্রেট অফার নয়ত? সারা বছর অনলিমিটেড ইন্টারনেট? অন্তত মাসখানেক? নাহ অত খুশি হয়ে সম্ভবত লাভ নেই। কোন সমস্যাতেই হয়ত এমন মেসেজ চলে এসেছে। ইগনোর করতে যাচ্ছিলাম। তখন ভাবলাম যাই হোক ডিকোড করার চেষ্টা করা যাক। ক্রিপ্টোগ্রাফি অল্প সল্প কিছু শিখেছিলাম। ( দারুণ একটা বই ) দেখা যাক কাজে লাগানো যায় কিনা। কিভাবে করা যায় ডিকোড?


দেখা যাচ্ছে টেক্সট টাতে হাবিজাবি কিছু সংখ্যা আর & # ; ফরম্যাটটা এমন &#<চার অঙ্কের সংখ্যা>; সংখ্যাগুলা ২৪০০-২৫০০ মধ্যে। এক জায়গায় দেখা যাচ্ছে MB আরেক জায়গায় .88 আবার *7728*2*2#। ৮৮ পয়সায় বিশাল পরিমাণ ডেটা পাওয়া যাওয়ার বিশাল সম্ভাবনা। এখানে কিছু ইংলিশ ক্যারেক্টার ঠিকঠাক। কিন্তু বাকিগুলা এনক্রিপ্টেট! মানে দাঁড়ায় ইউনিকোড ক্যারেক্টারগুলা এনক্রিপ্টেট। ; দিয়ে নিশ্চয় ক্যারেক্টারগুলা আলাদা করা হয়েছে। ইউনিকোড ক্যারেক্টারের বদলে অর্ডিনাল আইসা পরে নাই ত? পাইথন নোটবুক খুলে শুরু করলাম



তাই মনে হচ্ছে। 'ক' এর ইউনিকোড ভ্যালু ২৪৫৩। তাহলে এইবেলা আর ক্রিপ্টোগ্রাফির জ্ঞানবুদ্ধি কাজে লাগানো গেল না 🙁 মেসেজটা একটা ফাইলে পেস্ট করে পিসিতে নিয়ে আসলাম। তারপর



এখন &#‌‌[code];  প্যাটার্নটাকে ইউনিকোড ক্যারেক্টার দিয়ে রিপ্লেস করে দিলেই হল। এখন ; দিয়ে split করে দেয়া যায়। তারপরে প্রত্যেকটার শেষের চারটা ক্যারেক্টার নিয়ে যে ইউনিকোড ক্যারেক্টার পাওয়া যায় সেগুলা নিয়ে আবার যোগ করে দিলেই হয়। কিন্তু সেক্ষেত্রে নন-ইউনিকোডগুলার জন্য ঝামেলা হয়ে যয়। আরো সুন্দর সলিউশন পেলে ভাল হয়।

হ্যাঁ। regex। regex দিয়ে রিপ্লেস করা যায়। এখানে প্যাটার্নটা হবে &#\d{4}; প্রত্যেকটা প্যাটার্নকে রিপ্লেস করতে হবে। ডক ঘেটে এই কাজের জন্য সুন্দর একটা ফাংশন পেয়ে গেলাম। re.sub() । এটা প্যাটার্ন রিপ্লেস করার জন্য একটা ফাংশন নেয়। তাহলে সেটা ডিফাইন করে ফেলা যাক



এইবেলা re.sub() কল করে ফেললেই হল




শুক্রবার, ২২ এপ্রিল, ২০১৬

সাবলাইম টেক্সটে ইনপুট দেয়া

কিছুদিন আগে আবিষ্কার করলাম উইন্ডোজেও সি++ এর জন্য সাবলাইম টেক্সট কনফিগার করা করা খুব কঠিন নয়। সাবলাইম টেক্সট ইন্সটল করে MinGW  ইন্সটল করে নিলেই হয়। কম্পিটেটিভ প্রোগ্রামিং এর জন্য সাবলাইম টেক্সট খুবই কাজের একটা জিনিস। অনেক ফিচার আছে যেগুলো আমার মত অলসদের জন্য খুবই আরামের ব্যাপার। যারা ব্যবহার করেন তাদের তো আর বলতে হবে না। আজ একটা কমন সমস্যার সমাধান শেয়ার করলাম।

একটা সমস্যা হল প্রোগ্রাম রান করে ইনপুট দেয়া যায় না।

সোমবার, ২২ ফেব্রুয়ারী, ২০১৬

Greedy বা লোভী অ্যালগরিদম

greedy অ্যালগরিদম জিনিসটা আসলে কি জানার জন্য স্বাভাবিকভাবেই প্রথমে গুগলে সার্চ করি। কিন্তু উইকিপিডিয়া পেজটা দেখে খুব ঘাবড়ে যাই।

শনিবার, ২০ ডিসেম্বর, ২০১৪

শৃঙ্খল বিশৃঙ্খলা

অনেক বিশৃঙ্খলার মধ্যেই জটিল একটা শৃঙ্খলা থাকে । খেয়াল করেছেন কখনো? না করে থাকলে খেয়াল করুন। রিসেট করতে ক্লিক করুন।