zoukankan      html  css  js  c++  java
  • 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());
      }
    }

  • 相关阅读:
    如何修补软件、系统漏洞?
    轻松学习Linux之本地安装系统
    看程序体验缓冲区溢出漏洞
    企业网管软件实战之SolarWinds LANsurveyor
    Android项目开发遇到的问题(64K的错误)的解决之路,从入坑到出坑
    史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置
    [noip2011]计算系数+二项式定理证明
    [nowcoder5668H]Sort the Strings Revision
    (动态规划)导弹防御
    nyoj 79 拦截导弹
  • 原文地址:https://www.cnblogs.com/xfiver/p/1743265.html
Copyright © 2011-2022 走看看