📜  实现单字母密码的Java程序

📅  最后修改于: 2022-05-13 01:55:40.917000             🧑  作者: Mango

实现单字母密码的Java程序

单字母密码是一种密码,其中基于单个字母密钥将明文字母映射为密文字母。它是一对一的映射。

给定纯文本,任务是实现单字母密码。

例子:

Input:  Welcome to geeksforgeeks
Output: Plain text: Welcome to geeksforgeeks
        Encrypted message: VTSEGDT ZG UTTALYGKUTTAL
        Decrypted message: welcome to geeksforgeeks

Input:  Live the moment
Output: Plain text: Live the moment
        Encrypted message: SOCT ZIT DGDTFZ
        Decrypted message: live the moment

将字符映射到我们在代码中使用的密文字母:

abcdefghij
QWERTYUIOP
klmnopqrst
ASDFGHJKLZ
uvwxyz
XCVBNM

输出说明:

W – w – Vt – Z g – U g – U
e – T o – G e – T e – T
l – S  e – T e – T
c – E  k – A k – A
o – G s – L s – L
m – D f – Y 
e – T o – G 
  r – K 

欢迎来到 geeksforgeeks → VTSEGDT ZG UTTALYGKUTTAL

方法:

1.创建两个字符数组,一个用于普通字母表(比如 normalChar[]),另一个用于编码(比如 codedChar[])。

2.我们将使用两个函数:

  • stringEncryption:我们将字符串(所有字符均为小写的字符串)作为参数传递。初始化一个空字符串(比如 encryptedString 。我们使用 for 循环,将每个字符与普通的 char 数组进行比较,只要条件为真,就将具有 codedChar 对应索引的字符添加到加密字符串中。对于特殊字符,我们将它们直接添加到字符串中。
  • stringDescryption:我们将加密的字符串作为参数传递。初始化一个空字符串(比如 descryptedString)。同理,我们运行for循环,将对应索引为normalChar的字符添加到解密后的字符串中。对于特殊字符,我们将它们直接添加到字符串中。

下面是上述方法的实现:

Java
// Java Program to Implement the Monoalphabetic Cypher
 
import java.io.*;
class GFG {
    public static char normalChar[]
        = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
            'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
            's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
 
    public static char codedChar[]
        = { 'Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O',
            'P', 'A', 'S', 'D', 'F', 'G', 'H', 'J', 'K',
            'L', 'Z', 'X', 'C', 'V', 'B', 'N', 'M' };
 
    // Function which returns encrypted string
    public static String stringEncryption(String s)
    {
        // initializing an empty String
        String encryptedString = "";
 
        // comparing each character of the string and
        // encoding each character using the indices
        for (int i = 0; i < s.length(); i++) {
            for (int j = 0; j < 26; j++) {
 
                // comparing the character and
                // adding the corresponding char
                // to the encryptedString
                if (s.charAt(i) == normalChar[j])
                {
                    encryptedString += codedChar[j];
                    break;
                }
 
                // if there are any special characters
                // add them directly to the string
                if (s.charAt(i) < 'a' || s.charAt(i) > 'z')
                {
                    encryptedString += s.charAt(i);
                    break;
                }
            }
        }
 
        // return encryptedString
        return encryptedString;
    }
 
    // Function which returns descryptedString
    public static String stringDecryption(String s)
    {
 
        // Initializing the string
        String decryptedString = "";
 
        // Run the for loop for total string
        for (int i = 0; i < s.length(); i++)
        {
            for (int j = 0; j < 26; j++) {
 
                // compare each characters and decode them
                // using indices
                if (s.charAt(i) == codedChar[j])
                {
                    decryptedString += normalChar[j];
                    break;
                }
 
                // Add the special characters directly to
                // the String
                if (s.charAt(i) < 'A' || s.charAt(i) > 'Z')
                {
                    decryptedString += s.charAt(i);
                    break;
                }
            }
        }
 
        // return the decryptedString
        return decryptedString;
    }
    public static void main(String args[])
    {
        String str = "Welcome to geeksforgeeks";
 
        // print plain text
        System.out.println("Plain text: " + str);
 
        // Changing whole string to lower case
        // function call to stringEncryption and storing in
        // encryptedString
        String encryptedString = stringEncryption(str.toLowerCase());
 
        // printing encryptedString
        System.out.println("Encrypted message: "
                           + encryptedString);
 
        // function call to stringDecryption and printing
        // the decryptedString
        System.out.println("Decrypted message: "
            + stringDecryption(encryptedString));
       
    }
}



输出
Plain text: Welcome to geeksforgeeks
Encrypted message: VTSEGDT ZG UTTALYGKUTTAL
Decrypted message: welcome to geeksforgeeks