import java.util.Scanner;
public class Encpryt {
public Encpryt() {
Scanner scan = new Scanner(System.in);
System.out.println("输入一个四位数:");
String str = scan.next();
while(str != "q"){
if (str.length()!=4) {
System.out.println("您输入的不是4位的数字请重新输入");
str = scan.next();
continue;
}
System.out.println("加密后的数是:");
char[] ns = new char[4];
for(int i = 0; i < 4; i++){
ns[i] = str.charAt(i);
System.out.println(ns[i] -'0' + 'a' - 1);
}
System.out.println("输入一个四位数:");
str = scan.next();
}
}
/** * @param args
*/
public static void main(String[] args) {
new Encpryt();
}
}
这个只是最简单加密了
很容易找出规律破解
既然如此
你何不使用异或加密
a^b = c c^b = a
加密 a和 密钥b 异或 等于 c
解密 c和密钥b 异或 等于 a
亲,我做出来了,不过发现你这个的问题了。比如4个数加起来是10怎么办?那个0是显示什么?
import java.util.Scanner;
public class Test {
/** * @param args
*/
public static void main(String[] args) {
// 用java做数字加密,思路如下:输入一个四位数,每位相加,1~9分别代表ASC中的a~i,0表示、,输入1,结束加密
boolean flag = true;//设置循环
while (flag) {
System.out.println("请输入一个4位的数字");
Scanner input = new Scanner(System.in);//获得输入值
String s = input.nextLine();
//根据字符串的长度判断是否是4位的数字
if(s.equals("1")){
System.out.println("结束加密");
flag=false;
}else{
if (s.length()!=4) {
System.out.println("您输入的不是4位的数字请重新输入");
}else{
//获得每位上的数字
int s1 = Integer.parseInt(s.substring(0, 1));
int s2 = Integer.parseInt(s.substring(1, 2));
int s3 = Integer.parseInt(s.substring(2, 3));
int s4 = Integer.parseInt(s.substring(3, 4));
//每位相加
int i = s1 + s2 + s3 + s4;
String j = Integer.toString(i);
//判断加出来的是1位还是2位
if (j.length()>1) {
//转换成asc码
int i1 = Integer.parseInt(j.substring(0, 1));
int i2 = Integer.parseInt(j.substring(1, 2));
char j1 = (char) (i1 + 96);
char j2 = (char) (i2 + 96);
String ts = String.valueOf(j1) + String.valueOf(j2);
System.out.println(ts);
} else {
int i1 = Integer.parseInt(j.substring(0, 1));
char j1 = (char) (i1 + 96);
String ts = String.valueOf(j1);
System.out.println(ts);
}
}
}
}
}
}