package util;
/**
*
* APDPlat - Application Product Development Platform
* Copyright (c) 2013, 杨尚川, yang-shangchuan@qq.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
import org.springframework.security.authentication.encoding.Md5PasswordEncoder;
/**
*此工具负责根据用户的机器码来生成注册码
* @author 杨尚川
*/
public class AuthorizationUtils {
private static final int SPLITLENGTH=4;
public static void main(String args[]) throws Exception {
String code="71F5-DA7F-495E-7F70-6D47-F3E6-3DC6-349A";
String authCode=auth(code);
System.out.println("机器码:"+code);
System.out.println("注册码:"+authCode);
}
public static String auth(String machineCode){
String newCode="(yang-shangchuan@qq.com)["+machineCode.toUpperCase()+"](APDPlat应用级产品开发平台)";
String code = new Md5PasswordEncoder().encodePassword(newCode,"杨尚川").toUpperCase()+machineCode.length();
return getSplitString(code);
}
private static String getSplitString(String str){
return getSplitString(str, "-", SPLITLENGTH);
}
private static String getSplitString(String str, String split, int length){
int len=str.length();
StringBuilder temp=new StringBuilder();
for(int i=0;i<len;i++){
if(i%length==0 && i>0){
temp.append(split);
}
temp.append(str.charAt(i));
}
String[] attrs=temp.toString().split(split);
StringBuilder finalMachineCode=new StringBuilder();
for(String attr : attrs){
if(attr.length()==length){
finalMachineCode.append(attr).append(split);
}
}
String result=finalMachineCode.toString().substring(0, finalMachineCode.toString().length()-1);
return result;
}
}