Java正则表达式及简单的字符加密解密
题目: 了解及掌握正则表达式及简单的字符加密解密 内容: 输入一段信息,里面包括一些特定的日期、时间等,请对里面的包含数字的信息进行提取,并加密和解密。
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class EncryptAndDecrypt { public static String encrypt(String sourceString, String password) { char[] p = password.toCharArray(); // 字符串转字符数组 int n = p.length; // 密码长度 char[] c = sourceString.toCharArray(); int m = c.length; // 字符串长度 for (int k = 0; k < m; k++) { int mima = c[k] + p[k % n]; // 加密 c[k] = (char) mima; } return new String(c); } public static String decrypt(String sourceString, String password) { char[] p = password.toCharArray(); // 字符串转字符数组 int n = p.length; // 密码长度 char[] c = sourceString.toCharArray(); int m = c.length; // 字符串长度 for (int k = 0; k < m; k++) { int mima = c[k] - p[k % n]; // 解密 c[k] = (char) mima; } return new String(c); } public static void main(String[] args) { Scanner scan=new Scanner(System.in); System.out.println("请输入您要提取的信息内容:"); String sourceString=scan.nextLine(); String reg="[^0-9]"; Pattern p = Pattern.compile(reg); Matcher m = p.matcher(sourceString); System.out.println("提取出的数字信息为:"); System.out.println(m.replaceAll("").trim()); EncryptAndDecrypt person=new EncryptAndDecrypt(); Scanner scanner=new Scanner(System.in); System.out.println("输入密码加密:"+m.replaceAll("").trim()); String password=scanner.nextLine(); String secret=person.encrypt(m.replaceAll("").trim(), password); System.out.println("密文:"+secret); System.out.println("输入解密密码:"); password=scanner.nextLine(); String source=person.decrypt(secret,password); System.out.println("明文:"+source); } }