এই সমস্যাতে, একটি স্ট্রিং দেওয়া আছে এবং আমাদের পলিবিয়াস স্কোয়ার সিফার ব্যবহার করে এর ইন্টিজার এনক্রিপশন বের করতে হবে।
পলিবিয়াস স্কোয়ার সিফার
এটি একটি টেবিল যা অক্ষরগুলো সংখ্যায় রূপান্তর করতে ব্যবহৃত হয়। ইংরেজি এনক্রিপশনের জন্য টেবিলটি 5x5 অর্থাৎ ২৫ কোষ्ठক থাকবে ২৬টি অক্ষরের জন্য। অক্ষর i এবং j একসাথে একটি কোষ্ঠকে রাখা হয়।
নিচের টেবিলটি একটি পলিবিয়াস স্কোয়ার সিফার দেখাচ্ছে:
| 1 | 2 | 3 | 4 | 5 | |
| 1 | A | B | C | D | E |
| 2 | F | G | H | I, J | K |
| 3 | L | M | N | O | P |
| 4 | Q | R | S | T | U |
| 5 | V | W | X | Y | Z |
টেবিলের অক্ষরগুলো র্যান্ডমাইজ করা যেতে পারে। בנוסף, ভাষার অক্ষর সংখ্যা অনুযায়ী টেবিলের আকার পরিবর্তন করা যায়।
উদাহরণ:
ইনপুট - Hello
আউটপুট - 2315313134
সমাধানের জন্য, আমরা প্রতিটি সংখ্যা জোড়া নেওয়া এবং 그에 따르면 চিঠি চেক করার প্রোগ্রাম তৈরি করব।
উদাহরণ
সমাধানের ইলাস্ট্রেশন প্রোগ্রাম:
#include <cmath>
#include <iostream>
using namespace std;
void LetterToNumber(string str) {
int R, C;
for (int i = 0; str[i]; i++) {
R = ceil((str[i] - 'a') / 5) + 1;
C = ((str[i] - 'a') % 5) + 1;
if (str[i] == 'k') {
R = R - 1;
C = 5 - C + 1;
} else if (str[i] >= 'j') {
if (C == 1) {
C = 6;
R = R - 1;
}
C = C - 1;
}
cout << R << C;
}
cout << endl;
}
int main() {
string str = "tutorialspoint";
cout << "The numeric encryption of string '" << str << "' is : ";
LetterToNumber(str);
return 0;
} আউটপুট
The numeric encryption of string 'tutorialspoint' is: 4445443442241131433534243344