Polybius Square Cipher

24 Jul, 2018
A Polybius Square is a table that allows someone to convert letters into numbers. To make the encryption little harder, this table can be randomized and shared with the recipient. In order to fit the 26 letters of the alphabet into the 25 cells created by the table, the letters ‘i’ and ‘j’ are usually combined into a single cell. Originally there was no such problem because the ancient greek alphabet has 24 letters.
A table of bigger size could be used if a language contain large number of alphabets.
Examples:
Input :  bus
Output : 124543

Input :  geeksforgeeks 
Output : 22151525432134422215152543 

C++
Java
Python
C#
PHP
// CPP Program to implement polybius cipher#include <cmath>#include <iostream>using namespace std;  // function to display polybius cipher textvoid polybiusCipher(string s) {  int row, col;    // convert each character to its encrypted code  for (int i = 0; s[i]; i++) {      // finding row of the table    row = ceil((s[i] - 'a') / 5) + 1;      // finding column of the table    col = ((s[i] - 'a') % 5) + 1;      // if character is 'k'    if (s[i] == 'k') {      row = row - 1;      col = 5 - col + 1;    }      // if character is greater than 'j'    else if (s[i] >= 'j') {      if (col == 1) {        col = 6;        row = row - 1;      }      col = col - 1;    }    cout << row << col;  }    cout << endl;}  // Driver's Codeint main() {  string s = "geeksforgeeks";  polybiusCipher(s);  return 0;}
// Java Program to implement polybius cipher  class GFG{    // Function to display polybius    // cipher text    static void polybiusCipher(String s)     {        int row, col;                  // convert each character         // to its encrypted code        for (int i = 0;i < s.length(); i++)         {                      // finding row of the table            row = (int)Math.ceil((s.charAt(i) - 'a') / 5) + 1;                      // finding column of the table            col = ((s.charAt(i) - 'a') % 5) + 1;                      // if character is 'k'            if (s.charAt(i) == 'k')             {                row = row - 1;                col = 5 - col + 1;            }                      // if character is greater than 'j'            else if (s.charAt(i) >= 'j')            {                if (col == 1)                 {                    col = 6;                    row = row - 1;                }                col = col - 1;            }            System.out.print(row +""+ col);        }                  System.out.println();    }          // Driver code    public static void main (String[] args)    {        String s = "geeksforgeeks";        polybiusCipher(s);    }}  // This code is contributed by Anant Agarwal.
# Python Program to implement polybius cipher  # function to display polybius cipher textdef polybiusCipher(s):          # convert each character to its encrypted code        for char in s:                              # finding row of the table                row = int((ord(char) - ord('a')) / 5) + 1                          # finding column of the table                 col = ((ord(char) - ord('a')) % 5) + 1                  # if character is 'k'                if char == 'k':                        row = row - 1                        col = 5 - col + 1                                          # if character is greater than 'j'                elif ord(char) >= ord('j'):                        if col == 1 :                            col = 6                            row = row - 1                                                      col = col - 1                                          print(row, col, end ='', sep ='')  # Driver's Codeif __name__ == "__main__":          s = "geeksforgeeks"          # print the cipher of "geeksforgeeks"        polybiusCipher(s)
// C# Program to implement// polybius cipherusing System;  class GFG{    // Function to display     // polybius cipher text    static void polybiusCipher(string s)     {        int row, col;                  // convert each character         // to its encrypted code        for (int i = 0;                 i < s.Length; i++)         {            // finding row of the table            row = (int)Math.Floor((s[i] -                          'a') / 5.0) + 1;                          // finding column            // of the table            col = ((s[i] - 'a') % 5) + 1;                      // if character is 'k'            if (s[i] == 'k')             {                row = row - 1;                col = 5 - col + 1;            }                      // if character is             // greater than 'j'            else if (s[i] >= 'j')            {                if (col == 1)                 {                    col = 6;                    row = row - 1;                }                col = col - 1;            }            Console.Write(row +                           "" + col);        }        Console.WriteLine();    }          // Driver code    static void Main ()    {        string s = "geeksforgeeks";        polybiusCipher(s);    }}   // This code is contributed by // Manish Shaw(manishshaw1)
<?php// PHP Program to implement // polybius cipher  // function to display // polybius cipher textfunction polybiusCipher($s){$row = 0;$col = 0;  // convert each character // to its encrypted codefor ($i = 0;      $i < strlen($s); $i++) {      // finding row     // of the table    $row = floor((ord($s[$i]) -                   ord('a')) / 5) + 1;      // finding column    // of the table    $col = ((ord($s[$i]) -             ord('a')) % 5) + 1;      // if character is 'k'    if ($s[$i] == 'k')     {        $row = $row - 1;        $col = 5 - $col + 1;    }      // if character is    // greater than 'j'    else if ($s[$i] >= 'j')    {        if ($col == 1)         {            $col = 6;            $row = $row - 1;        }        $col = $col - 1;    }    echo ($row.$col);} echo ("\n");}  // Driver Code$s = "geeksforgeeks";polybiusCipher($s);  // This code is contributed by // Manish Shaw(manishshaw1)?>
Output:
22151525432134422215152543

manishshaw1
encoding-decoding
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
What is Data Structure: Types, Classifications and Applications
Top 50 String Coding Problems for Interviews
Print all the duplicates in the input string
Print all subsequences of a string
A Program to check if strings are rotations of each other or not
String class in Java | Set 1
Palindrome Partitioning | DP-17
Find the smallest window in a string containing all characters of another string
Convert character array to string in C++
Remove first and last character of a string in Java