欢迎光临
我一直在奋斗

正方教务系统解密源码(java)

通过对于网上的一些人说提供的dll的反汇编,逆向出了源代码。其实还是比较简单的,只要记住一个道理,异或是可逆的就对了。比如a^b=c,那么a=b^c,所以我们能够轻松的写出他的加密和解密程序了。首先程序的加密是先使用key也就是我程序中的key,并使用异或进行判断,先取出我们要加密的字符串str和加密密钥Encrypt01。依次判断异或结果,如果在就直接加上,否则就加上异或后的结果。然后对于要加密的字符串是偶数的时候,还需在加密后对其进行前一半和后一半的反转。解密就不用多说了把,就是先判断是否是偶数个,如果是就直接先反转,然后在用key去和他依此解密。

源代码:

import java.util.Scanner;
public class 正方教务解密工具 {
	public static void main(String args[])
	{
		int choice;
		Scanner scan=new Scanner(System.in);
		while(true)
		{
		System.out.println("请选择加密或者解密(1,2)");
		System.out.println("1.加密");
		System.out.println("2.解密");
		System.out.println("3.退出");
		choice=scan.nextInt();
		switch (choice) {
		case 1:while(true)
		       {
			   String str1=scan.nextLine();
			   if(str1.compareTo("3")==0)
			   break;
			   System.out.println(jiami(str1,"Encrypt01"));
			   
		       }
			
			break;
		case 2:while(true)
	       {
		   String str1=scan.nextLine();
		   if(str1.compareTo("3")==0)
		   break;
		   System.out.println(jiemi(str1,"Encrypt01"));
		   
	       }
		case 3:break;	   
		default:System.out.println("错误的选择!");
			break;
		}
		
	}
		
		//for(int i=0;i<choice;i++)
        
		//System.out.println(jiami(scan.nextLine(),"Encrypt01"));
		//System.out.println(jiemi(scan.nextLine(),"Encrypt01"));
		
	}
	public static String StrReverse(String str)
	{
		StringBuffer Painstr =new StringBuffer(str);
		return Painstr.reverse().toString();
	}
	public static String jiemi(String str,String key)
	{
		int pos=1;
		String newstr="";
		char keychar,strchar;
		if(str.length()%2==0)
		{
			str=StrReverse(str.substring(0,str.length()/2))+StrReverse(str.substring(str.length()/2));
		}
	 for(int i=1;i<=str.length();i++)
	 {
		  strchar=str.charAt(i-1);
		  keychar=key.charAt(pos-1);
		 if((((strchar^keychar)<32|(strchar^keychar)>126)|(strchar^keychar)<0)|((strchar^keychar)>255))
		 {
			 newstr+=strchar;
		 }
		 else
		 {
			 char ch=(char)(strchar^keychar);
			 newstr+=ch;
		 }
		 if(key.length()==pos)
		 {
			 pos=0;
		 }
		 pos++;
	 }
		return newstr;
	}
	public static String jiami(String str,String key)
	{
		int pos=1;
		String newstr="";
		char truestr,truekey;
		
	    for(int i=1;i<=str.length();i++)
	    {
	    	truestr=str.charAt(i-1);
	    	truekey=key.charAt(pos-1);
	    	if((((truestr^truekey)<32|(truestr^truekey)>126)|(truekey^truestr)<0)|(truekey^truestr)>255)
            {
	    		 newstr+=truestr;
            }
	    	else
	    	{
	    		char ch=(char)(truekey^truestr);
	    		newstr+=ch;
	    	}
	    	if(pos==key.length())
	    	{pos=0;}
	    		
	    	pos++;
	    	
	    }
	    if(str.length()%2==0)
		{
			newstr=StrReverse(newstr.substring(0,newstr.length()/2))+StrReverse(newstr.substring(newstr.length()/2));
			
		}
	    return newstr;
		
	}

}

00:00/00:00
未经允许不得转载:奋斗者的足迹 » 正方教务系统解密源码(java)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

奋斗者的足迹

联系我们加入我们