Un cuadrado de Polibio es una tabla que permite a alguien convertir letras en números. Para que el cifrado sea un poco más difícil, esta tabla se puede aleatorizar y compartir con el destinatario. Para encajar las 26 letras del alfabeto en las 25 celdas creadas por la tabla, las letras ‘i’ y ‘j’ generalmente se combinan en una sola celda. Originalmente no había tal problema porque el alfabeto griego antiguo tiene 24 letras.
Se podría usar una tabla de mayor tamaño si un idioma contiene una gran cantidad de alfabetos.
Ejemplos:
Input : bus Output : 124543 Input : geeksforgeeks Output : 22151525432134422215152543
C++
// CPP Program to implement polybius cipher #include <cmath> #include <iostream> using namespace std; // function to display polybius cipher text void 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 Code int main() { string s = "geeksforgeeks"; polybiusCipher(s); return 0; }
Java
// 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
# Python Program to implement polybius cipher # function to display polybius cipher text def 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 Code if __name__ == "__main__": s = "geeksforgeeks" # print the cipher of "geeksforgeeks" polybiusCipher(s)
C#
// C# Program to implement // polybius cipher using 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 // PHP Program to implement // polybius cipher // function to display // polybius cipher text function polybiusCipher($s) { $row = 0; $col = 0; // convert each character // to its encrypted code for ($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) ?>
Producción:
22151525432134422215152543
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA