加密逻辑分享
本人java菜鸟一名,工作也快一年了,在工作之余思考了很多,总想自己独立做点东西,可是没有什么好的想法,就在昨天突然想做个密码加密试试,然后就大刀阔斧开整。
代码写完之后测试没问题,打成jar包,引入使用没问题,很开心啊,然而悲剧出现了,现在只能加密,不能解密,而且自己把解密的路堵死了。不多说了,直接上代码,没有多少,只是逻辑,并没有用到算法,而且代码也很烂,自己都不能直视。不过有个问题,为什么是静态方法才能调用呢,求各位大神解惑。
自己写的主方法,为什么是public,怕访问不到
public static String main(String str) {
String[] str2 = new String[str.length()]; //创建String数组,指定长度为密码的长度
Code code = new Code();
for(int i=0;i<str.length();i++){
str2[i] = str.substring(i,i+1);//拆分密码
str2[i] = code.code(str2[i]);//调用加密逻辑
}
String result = Arrays.toString(str2);//将数组转换为字符串
result = result.replaceAll("[^a-z0-9A-Z]", "");//匹配正则表达式,去掉[,]符号
return result;
}
加密逻辑类,就是这里把解密的路堵死了
static String code(String str){
if(str.equals("0") || str.equals("z") || str.equals("Z")){
str = "zE0RO";
}else if(str.equals("1") || str.equals("a") || str.equals("A")
|| str.equals("j") || str.equals("J")
|| str.equals("r") || str.equals("R")){
str = "Oa1nE";
}else if(str.equals("2") || str.equals("b") || str.equals("B")
|| str.equals("b") || str.equals("B")
|| str.equals("s") || str.equals("S")){
str = "BtW02";
}else if(str.equals("3") || str.equals("c") || str.equals("B")
|| str.equals("k") || str.equals("K")
|| str.equals("t") || str.equals("T")){
str = "t3rCe";
}else if(str.equals("4") || str.equals("d") || str.equals("D")
|| str.equals("l") || str.equals("L")
|| str.equals("u") || str.equals("U")){
str = "fDu4r";
}else if(str.equals("5") || str.equals("e") || str.equals("E")
|| str.equals("m") || str.equals("M")
|| str.equals("v") || str.equals("V")){
str = "fEv5e";
}else if(str.equals("6") || str.equals("f") || str.equals("F")
|| str.equals("n") || str.equals("N")
|| str.equals("w") || str.equals("W")){
str = "sFi6x";
}else if(str.equals("7") || str.equals("g") || str.equals("G")
|| str.equals("o") || str.equals("O")
|| str.equals("x") || str.equals("X")){
str = "sGv7n";
}else if(str.equals("8") || str.equals("h") || str.equals("H")
|| str.equals("p") || str.equals("P")
|| str.equals("y") || str.equals("Y")){
str = "eHg8t";
}else if(str.equals("9") || str.equals("i") || str.equals("I")
|| str.equals("q") || str.equals("Q")
|| str.equals("z") || str.equals("Z")){
str = "nIi9e";
}
return str;
}
打成jar包后的测试
import tools.Main;
public class Test {
public static void main(String[] args) {
String str = "123456";
String str2 = Main.main(str);
System.out.println(str2);
}
}
控制台打印的结果为:Oa1nEBtW02t3rCefDu4rfEv5esFi6x
后期有时间会优化一下这套逻辑,把解密的逻辑也做出来,感谢各位看官,欢迎各路大神指点。