• java实现维吉尼亚加密/解密算法


    加密算法程序:

    public class mtoc
    {

    //输入明文和密钥,用输入的密钥对明文进行加密
    public static void main(String[] args)
    {int i;
     char[] c=new char[100];
     char[] k1=new char[100];

    //输入
    System.out.print("enter a mingwen string:");
     String m=MyInput.readString();
    System.out.print("enter a key string:");
     String k=MyInput.readString();

    //构造密钥对照表                                                                                                    

    for(i=0;i<k.length();i++)
    {
    if(k.charAt(i)>='a'&&k.charAt(i)<='z')
    k1[i]=(char)(k.charAt(i)-97);
    if(k.charAt(i)>='A'&&k.charAt(i)<='Z')
    k1[i]=(char)(k.charAt(i)-65);
    }

    //加密

    for(i=0;i<m.length();i++)
    {
    if(m.charAt(i)>='a'&&m.charAt(i)<='z')
    c[i]=(char)((m.charAt(i)-97+k1[i%k.length()])%26+97);
    if(m.charAt(i)>='A'&&m.charAt(i)<='Z')
    c[i]=(char)((m.charAt(i)-65+k1[i%k.length()])%26+65);
    }

    //输出密文
    for(i=0;i<c.length;i++)
    System.out.print(c[i]);}

    }

    解密算法程序:

    public class ctom
    {

    //输入密文和密钥,用密钥对密文解密
    public static void main(String[] args)
    {int i;
    char[] m=new char[100];
    char[] k1=new char[100];

    //输入
    System.out.print("enter the miwen string:");
    String c=MyInput.readString();
    System.out.print("enter the key string:");
    String k=MyInput.readString();

    //构造密钥对照表
    for(i=0;i<k.length();i++)
    {
    if(k.charAt(i)>='a'&&k.charAt(i)<='z')
    k1[i]=(char)(k.charAt(i)-97);
    if(k.charAt(i)>='A'&&k.charAt(i)<='Z')
    k1[i]=(char)(k.charAt(i)-65);
    }

    //解密

    for(i=0;i<c.length();i++)
    {
    if(c.charAt(i)>='a'&&c.charAt(i)<='z')
    m[i]=(char)((c.charAt(i)-97-k1[i%k.length()]+26)%26+97);
    if(c.charAt(i)>='A'&&c.charAt(i)<='Z')
    m[i]=(char)((c.charAt(i)-65-k1[i%k.length()]+26)%26+65);
    }

    //输出明文
    for(i=0;i<m.length;i++)
    System.out.print(m[i]);}

    }

    需要用到的MyInput.java类:

    // MyInput.java: Contain the methods for reading int, double, and
    // string values from the keyboard
    import java.io.*;

    public class MyInput
    {
      // Read a string from the keyboard
      public static String readString()
      {
        BufferedReader br
          = new BufferedReader(new InputStreamReader(System.in), 1);

        // Declare and initialize the string
        String string = "";

        // Get the string from the keyboard
        try
        {
          string = br.readLine();
        }
        catch (IOException ex)
        {
          System.out.println(ex);
        }

        // Return the string obtained from the keyboard
        return string;
      }

      // Read an int value from the keyboard
      public static int readInt()
      {
        return Integer.parseInt(readString());
      }

      // Read a double value from the keyboard
      public static double readDouble()
      {
        return Double.parseDouble(readString());
      }

      // Read a byte value from the keyboard
      public static byte readByte()
      {
        return Byte.parseByte(readString());
      }

      // Read a short value from the keyboard
      public static short readShort()
      {
        return Short.parseShort(readString());
      }

      // Read a long value from the keyboard
      public static long readLong()
      {
        return Long.parseLong(readString());
      }

      // Read a float value from the keyboard
      public static float readFloat()
      {
        return Float.parseFloat(readString());
      }
    }

    加密算法程序:

    public class mtoc
    {

    //输入明文和密钥,用输入的密钥对明文进行加密
    public static void main(String[] args)
    {int i;
     char[] c=new char[100];
     char[] k1=new char[100];

    //输入
    System.out.print("enter a mingwen string:");
     String m=MyInput.readString();
    System.out.print("enter a key string:");
     String k=MyInput.readString();

    //构造密钥对照表                                                                                                    

    for(i=0;i<k.length();i++)
    {
    if(k.charAt(i)>='a'&&k.charAt(i)<='z')
    k1[i]=(char)(k.charAt(i)-97);
    if(k.charAt(i)>='A'&&k.charAt(i)<='Z')
    k1[i]=(char)(k.charAt(i)-65);
    }

    //加密

    for(i=0;i<m.length();i++)
    {
    if(m.charAt(i)>='a'&&m.charAt(i)<='z')
    c[i]=(char)((m.charAt(i)-97+k1[i%k.length()])%26+97);
    if(m.charAt(i)>='A'&&m.charAt(i)<='Z')
    c[i]=(char)((m.charAt(i)-65+k1[i%k.length()])%26+65);
    }

    //输出密文
    for(i=0;i<c.length;i++)
    System.out.print(c[i]);}

    }

    解密算法程序:

    public class ctom
    {

    //输入密文和密钥,用密钥对密文解密
    public static void main(String[] args)
    {int i;
    char[] m=new char[100];
    char[] k1=new char[100];

    //输入
    System.out.print("enter the miwen string:");
    String c=MyInput.readString();
    System.out.print("enter the key string:");
    String k=MyInput.readString();

    //构造密钥对照表
    for(i=0;i<k.length();i++)
    {
    if(k.charAt(i)>='a'&&k.charAt(i)<='z')
    k1[i]=(char)(k.charAt(i)-97);
    if(k.charAt(i)>='A'&&k.charAt(i)<='Z')
    k1[i]=(char)(k.charAt(i)-65);
    }

    //解密

    for(i=0;i<c.length();i++)
    {
    if(c.charAt(i)>='a'&&c.charAt(i)<='z')
    m[i]=(char)((c.charAt(i)-97-k1[i%k.length()]+26)%26+97);
    if(c.charAt(i)>='A'&&c.charAt(i)<='Z')
    m[i]=(char)((c.charAt(i)-65-k1[i%k.length()]+26)%26+65);
    }

    //输出明文
    for(i=0;i<m.length;i++)
    System.out.print(m[i]);}

    }

    需要用到的MyInput.java类:

    // MyInput.java: Contain the methods for reading int, double, and
    // string values from the keyboard
    import java.io.*;

    public class MyInput
    {
      // Read a string from the keyboard
      public static String readString()
      {
        BufferedReader br
          = new BufferedReader(new InputStreamReader(System.in), 1);

        // Declare and initialize the string
        String string = "";

        // Get the string from the keyboard
        try
        {
          string = br.readLine();
        }
        catch (IOException ex)
        {
          System.out.println(ex);
        }

        // Return the string obtained from the keyboard
        return string;
      }

      // Read an int value from the keyboard
      public static int readInt()
      {
        return Integer.parseInt(readString());
      }

      // Read a double value from the keyboard
      public static double readDouble()
      {
        return Double.parseDouble(readString());
      }

      // Read a byte value from the keyboard
      public static byte readByte()
      {
        return Byte.parseByte(readString());
      }

      // Read a short value from the keyboard
      public static short readShort()
      {
        return Short.parseShort(readString());
      }

      // Read a long value from the keyboard
      public static long readLong()
      {
        return Long.parseLong(readString());
      }

      // Read a float value from the keyboard
      public static float readFloat()
      {
        return Float.parseFloat(readString());
      }
    }

  • 相关阅读:
    新的
    曾经写过得太监小说3《缱绻修真界》
    Python的from和import用法
    python几个有意思的小技巧
    leetcode 最长回文串
    leetcode-快速排序C++自写
    leetcode 面试题 01.06. 字符串压缩
    leeetcode 剑指 Offer 29. 顺时针打印矩阵
    leetcode 70. 爬楼梯 续
    leetcode 1143. 最长公共子序列-华为
  • 原文地址:https://www.cnblogs.com/xfiver/p/1743265.html
Copyright © 2020-2023  润新知