数据结构 -- 加密解密

前言

  • 时间:2020.3.28
  • 备注:参考了网上的写法,有点没理解长于密钥值就再次使用是什么意思,我用到的就是单纯往ASCII码后移5位加密,这样子加密解密的结果都是同样的位数,仿佛没用上数据结构的东西。。

题目

  • 凯撒加密及解密:利用一列密钥值将消息中各个字母移动不同的位数。如果消息长于这列密钥值,可以从头再次使用这列密钥。请设计算法实现加密及解密,1)输入消息后,将加密后的密钥输出;2)输入密钥值,将原消息解密出来并输出。

代码

import java.util.Scanner;

public class TestMain {
    public static void main(String[] args) {
    	Scanner scan = new Scanner(System.in);

    		/* 1.输入原消息  */
    		//加密方式:将字母按字母表的顺序向右移动一定的位数
    		
    		System.out.print("Input beforeText: ");
	        String beforeText = scan.next();     
	        int digit = 5;  
	        String keyText = Encry(beforeText,digit);  
	        
	        /* 2.输出密钥值  */
	        System.out.println("After encryption: " + keyText);
	        
	        /* 3.输入密钥值  */
	        System.out.print("Input keyText: ");
	        String afterText = scan.next();
	        
	        /* 4.输出原消息  */        
	        	System.out.println("After encryption: " + Decry(afterText,digit));

    }
    
    //加密方法
    private static String Encry(String beforeText, int digit) {
        char[] chars = beforeText.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char c = (char) (chars[i] + digit);
            chars[i] = c;
        }
        return new String(chars);
    }
    
    //解密方法
    private static String Decry(String keyText, int digit) {
        char[] chars = keyText.toCharArray();
        for (int i = 0; i < chars.length; i++) {
            char c = (char) (chars[i] - digit);
            chars[i] = c;
        }
        return new String(chars);
    }
}

发布了19 篇原创文章 · 获赞 0 · 访问量 1990

猜你喜欢

转载自blog.csdn.net/hyidol/article/details/105165141