一、实验目的:
了解及掌握正则表达式及简单的字符加密解密
项目性质:设计型
二、实验内容:
1、有一段信息,“本次见面时间为2021年5月7日,中午12点30分,地点位于卫星路7186号,车牌号是吉AB27D,如果临时有事,请及时与我联系,电话是18812342234”
2、里面包括一些特定的日期、时间等,请对里面的包含数字的信息进行提取,并加密和解密
3、所用的技术包括正则表达式和字符加密解密
三、实验代码:
EncryptAndDecrypt.java
package Encryption;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EncryptAndDecrypt {//加密解密类
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);//返回密文
}
String ddecrypt(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);//返回明文
}
}
Zz.java
package Encryption;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import Encryption.EncryptAndDecrypt;
public class Zz {
public static void main(String args[]){
String sourceString="本次见面时间为2021年5月7日,中午12点30分,地点位于卫星路7186号,车牌号是吉AB27D,如果临时有事,请及时与我联系,电话是18812342234";
String reg="[^0-9]";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(sourceString);
System.out.println("输入密码加密:"+sourceString);
System.out.println("提取出的数字信息为:");
System.out.println(m.replaceAll("").trim());//提取信息
EncryptAndDecrypt person=new EncryptAndDecrypt();
System.out.println("请输入加密密码:");
Scanner scanner=new Scanner(System.in);
String password=scanner.nextLine();
String secret=person.encrypt(sourceString,password);
System.out.println("密文:"+secret);
System.out.println("输入解密密码:");
password=scanner.nextLine();
String source=person.ddecrypt(secret,password);
System.out.println("明文:"+source);
}
}
四、实验结果(截图)
参考书籍:Java2实用教程第5版(微课版)