求助: 一个软件注册片段?

 

  public static boolean checkSerial(String paramString1, String paramString2) 
  { 
    int i = 0; 
    try 
    { 
      i = Integer.valueOf(paramString2).intValue(); 
    } 
    catch (NumberFormatException localNumberFormatException) 
    { 
      return false; 
    } 
    if (paramString2.length() != 12) 
      return false; 
    paramString1 = paramString1 + "abcdefghijklmnopqrstuvwxyz"; 
    int j = 0; 
    for (int k = 0; k < 24; ++k) 
    { 
      j += paramString1.charAt(k); 
      j <<= 2; 
    } 
    j = Math.abs(j); 
    return (j == i); 

  }

 

 paramString1 :用户名   paramString2: 注册码

以上是一个小程序注册 检测有效性的片段,由上可以破解出 反推出一组 用户名 注册码吗?   万分感谢!

 

 

 

答案如下:

 

public class crack {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
	String username ="yourname";
    String password = getPassword(username);
    
    if(checkSerial(username,password)) System.out .println("ok");
    System.out .println("username:"+username+"\n"+"password:"+password);
		    

	}
	public static String getPassword(String userName)    
	{ 
	  userName = userName + "abcdefghijklmnopqrstuvwxyz";    
	  int j = 0;    
	  for (int k = 0; k < 24; ++k)    
	  {    
	    j += userName.charAt(k);  
	    j <<= 2;    
	  }    
	  j = Math.abs(j);
	  String passWord="";  
	  String jStr = ""+j;
	  for(int i=0;i<12-jStr.length();i++){
		  passWord+="0";
	  }
	  
	  return passWord+jStr;    
	  
	}  
	
	 public static boolean checkSerial(String paramString1, String paramString2)
	  {
	    int i = 0;
	    try
	    {
	      i = Integer.valueOf(paramString2).intValue();
	    }
	    catch (NumberFormatException localNumberFormatException)
	    {
	      return false;
	    }
	    if (paramString2.length() != 12)
	      return false;
	    paramString1 = paramString1 + "abcdefghijklmnopqrstuvwxyz";
	    int j = 0;
	    for (int k = 0; k < 24; ++k)
	    {
	      j += paramString1.charAt(k);
	      j <<= 2;
	    }
	    j = Math.abs(j);
	    return (j == i);
	  }
}

 

 在此特别感谢 “剑走偏锋2.1” !

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值