This is a java program to implement playfair cipher algorithm. The Playfair cipher or Playfair square is a manual symmetric encryption technique and was the first literal digraph substitution cipher.
Here is the source code of the Java Program to Enode a Message Using Playfair Cipher. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
package com.maixuanviet.setandstring; import java.util.Scanner; public class PlayfairCipherEncryption { private String KeyWord = new String(); private String Key = new String(); private char matrix_arr[][] = new char[5][5]; public void setKey(String k) { String K_adjust = new String(); boolean flag = false; K_adjust = K_adjust + k.charAt(0); for (int i = 1; i < k.length(); i++) { for (int j = 0; j < K_adjust.length(); j++) { if (k.charAt(i) == K_adjust.charAt(j)) { flag = true; } } if (flag == false) K_adjust = K_adjust + k.charAt(i); flag = false; } KeyWord = K_adjust; } public void KeyGen() { boolean flag = true; char current; Key = KeyWord; for (int i = 0; i < 26; i++) { current = (char) (i + 97); if (current == 'j') continue; for (int j = 0; j < KeyWord.length(); j++) { if (current == KeyWord.charAt(j)) { flag = false; break; } } if (flag) Key = Key + current; flag = true; } System.out.println(Key); matrix(); } private void matrix() { int counter = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { matrix_arr[i][j] = Key.charAt(counter); System.out.print(matrix_arr[i][j] + " "); counter++; } System.out.println(); } } private String format(String old_text) { int i = 0; int len = 0; String text = new String(); len = old_text.length(); for (int tmp = 0; tmp < len; tmp++) { if (old_text.charAt(tmp) == 'j') { text = text + 'i'; } else text = text + old_text.charAt(tmp); } len = text.length(); for (i = 0; i < len; i = i + 2) { if (text.charAt(i + 1) == text.charAt(i)) { text = text.substring(0, i + 1) + 'x' + text.substring(i + 1); } } return text; } private String[] Divid2Pairs(String new_string) { String Original = format(new_string); int size = Original.length(); if (size % 2 != 0) { size++; Original = Original + 'x'; } String x[] = new String[size / 2]; int counter = 0; for (int i = 0; i < size / 2; i++) { x[i] = Original.substring(counter, counter + 2); counter = counter + 2; } return x; } public int[] GetDiminsions(char letter) { int[] key = new int[2]; if (letter == 'j') letter = 'i'; for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (matrix_arr[i][j] == letter) { key[0] = i; key[1] = j; break; } } } return key; } public String encryptMessage(String Source) { String src_arr[] = Divid2Pairs(Source); String Code = new String(); char one; char two; int part1[] = new int[2]; int part2[] = new int[2]; for (int i = 0; i < src_arr.length; i++) { one = src_arr[i].charAt(0); two = src_arr[i].charAt(1); part1 = GetDiminsions(one); part2 = GetDiminsions(two); if (part1[0] == part2[0]) { if (part1[1] < 4) part1[1]++; else part1[1] = 0; if (part2[1] < 4) part2[1]++; else part2[1] = 0; } else if (part1[1] == part2[1]) { if (part1[0] < 4) part1[0]++; else part1[0] = 0; if (part2[0] < 4) part2[0]++; else part2[0] = 0; } else { int temp = part1[1]; part1[1] = part2[1]; part2[1] = temp; } Code = Code + matrix_arr[part1[0]][part1[1]] + matrix_arr[part2[0]][part2[1]]; } return Code; } public static void main(String[] args) { PlayfairCipherEncryption x = new PlayfairCipherEncryption(); Scanner sc = new Scanner(System.in); System.out.println("Enter a keyword:"); String keyword = sc.next(); x.setKey(keyword); x.KeyGen(); System.out .println("Enter word to encrypt: (Make sure length of message is even)"); String key_input = sc.next(); if (key_input.length() % 2 == 0) { System.out.println("Encryption: " + x.encryptMessage(key_input)); } else { System.out.println("Message length should be even"); } sc.close(); } }
Output:
$ javac PlayfairCipherEncryption.java $ java PlayfairCipherEncryption Enter a keyword: Sanfoundry Sanfoudrybceghiklmpqstvwxz S a n f o u d r y b c e g h i k l m p q s t v w x Enter word to encrypt: (Make sure length of message is even) Learningcenter Encryption: acndogrmegavgd
Related posts:
Spring Boot - Interceptor
New in Spring Security OAuth2 – Verify Claims
Spring Boot Security Auto-Configuration
HttpClient 4 Cookbook
Java Program to Check Whether Topological Sorting can be Performed in a Graph
Hashtable trong java
A Guide to Concurrent Queues in Java
Java Program to Perform Preorder Recursive Traversal of a Given Binary Tree
Java Program to Implement Hash Trie
Guide To CompletableFuture
Spring Boot - Web Socket
Split a String in Java
Jackson – Decide What Fields Get Serialized/Deserialized
Wrapper Classes in Java
Guide to Apache Commons CircularFifoQueue
Java Program to Implement Brent Cycle Algorithm
Create a Custom Exception in Java
Simultaneous Spring WebClient Calls
Java Web Services – Jersey JAX-RS – REST và sử dụng REST API testing tools với Postman
Hướng dẫn Java Design Pattern – Object Pool
Java Program to Construct K-D Tree for 2 Dimensional Data
Java Program to Implement Treap
Java Program to Generate Random Hexadecimal Byte
Java Program to Solve Travelling Salesman Problem for Unweighted Graph
Exploring the New Spring Cloud Gateway
Spring Cloud Series – The Gateway Pattern
Java Program to Implement Graham Scan Algorithm to Find the Convex Hull
Convert a Map to an Array, List or Set in Java
Java Program to Implement Hash Tables Chaining with Doubly Linked Lists
Java Program to Implement ConcurrentHashMap API
Use Liquibase to Safely Evolve Your Database Schema
String Operations with Java Streams