C ++中的Polybius Square密码

在这个问题中,我们得到了一个字符串,我们必须使用Polybius Square Cipher来找到其整数加密。

波利比乌斯广场密码

该表用于将字母转换为数字。用于英语加密的表格是5X5表格,即包含25个单元格,用于英语词典的26个字母。字母i和j放在一个单元格中。

下表显示了Polybius方形密码-


12345
1一种CdË
2FGH我,Jķ
3大号中号ñØP
4[R小号Ťü
5Vw ^Xÿž

表格的字母可以是随机的。而且,可以基于语言的字母数来改变表的大小。

让我们举个例子来了解这个问题,

输入-你好

输出-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 = "nhooo";
   cout<<"The numeric encryption of string '"<<str<<"' is : ";
   LetterToNumber(str);
   return 0;
}

输出结果

The numeric encryption of string 'nhooo' is: 4445443442241131433534243344