⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icpcodemgr.java

📁 陕西电信sp客户端
💻 JAVA
字号:
// ----------------------------------------------------------------------------
// $Source: /cvs/vas2006/webpro2/webpro_java/src/com/onewaveinc/portalman/webpro/security/ICPCodeMgr.java,v $
// ----------------------------------------------------------------------------
// Copyright (c) 2002 by Onewave Inc.
// ----------------------------------------------------------------------------
// $Id: ICPCodeMgr.java,v 1.1.1.1 2006/08/01 05:49:34 zhengx Exp $
// ----------------------------------------------------------------------------
// $Log: ICPCodeMgr.java,v $
// Revision 1.1.1.1  2006/08/01 05:49:34  zhengx
// no message
//
// Revision 1.1  2006/06/02 03:33:17  wuyan
// *** empty log message ***
//
// Revision 1.1  2005/12/08 10:37:42  like
// no message
//
// Revision 1.1  2003/07/28 06:30:32  zengc
// no message
//
// ----------------------------------------------------------------------------

package com.onewaveinc.portalman.webpro.security;

/**
 * <p>Title: PortalMAN SDK API Documentation</p>
 * <p>Description: OneWave Technologies., Inc. PortalMAN Value-add Management Platform 3rd Software Development Kit</p>
 * <p>Copyright: Copyright (c) 2002 </p>
 * <p>Company: OneWave Technologies., Inc.</p>
 * @author 3rd AAA & ICP Integration Developement Team
 * @version 1.5
 */


import java.util.*;
import java.sql.*;
//import com.onewaveinc.portalman.aaa.*;
//import com.onewaveinc.server.config.ConfigureFile;
//import com.onewaveinc.server.config.*;

public class ICPCodeMgr {

	private static int randomNoLength = 16;

	//用于对ICPCode进行MD5加密的key,保存于服务器端,唯一
	private ICPCodeMgr() {
	}

	/**
	 * 根据没有加密的icpCode,从mapping中读取icpKey
	 * @param originalICPCode
	 * @return
	 */
	//public static String getICPKeyfromOrigin(String originalICPCode) throws Exception{

	//	return ICPCodeMapping.getInstance().getICPKeyfromDB(originalICPCode);
	//}

	/**
	 * 取得加过密的icpCode,取得没有加密的icpCode,从mapping中读取icpKey
	 * @param EncryptICPCode
	 * @return
	 */
	//public static String getICPKeyfromEncrypt(String EncryptICPCode) throws Exception{

	//	return getICPKeyfromOrigin(getOriginIcpCode(EncryptICPCode));
	//}


	/**
	 * 分析传入的的icpcode是否正确
	 * @param icpCodeFromWebpro
	 * @return
	 */
	//public static boolean validateICPCode(String icpCodeFromWebpro) throws Exception{

	//	String icpKey = getICPKeyfromEncrypt(icpCodeFromWebpro);
	//	return validateICPCode(icpCodeFromWebpro,icpKey);
	//}

	/**
	 * 分析传入的的icpcode是否正确
	 * @param icpCodeFromWebpro
	 * @param icpKey
	 * @return
	 */
	public static boolean validateICPCode(String icpCodeFromWebpro,String icpKey) throws Exception{

		String encryptedICPCode = getEncryptedICPCode(icpCodeFromWebpro);
		String raNo = getRandomNo(icpCodeFromWebpro);
		String ICPCode = getOriginIcpCode(icpCodeFromWebpro);
		//System.out.println(icpKey + "------" + raNo + "--------" + generateEncryptedICPCode(ICPCode,raNo,icpKey));
		if (generateEncryptedICPCode(ICPCode,raNo,icpKey).equalsIgnoreCase(icpCodeFromWebpro)){
			return true;
		}else{
			throw new Exception("ICPCode(" + icpCodeFromWebpro +") is invalid!");
		}
	}

	/**
	 * 把普通icpCode生成加密的icpCode,用md5
	 * @param icpCode            原始的icpcode
	 * @param randomNo           16位随机数
	 * @return
	 */
	//public static String generateEncryptedICPCode(String icpCode,String randomNo) throws Exception{

	//	byte[] codeseed = MD5Tools.addbytes(icpCode,randomNo);
	//	codeseed = MD5Tools.addbytes(codeseed,getICPKeyfromOrigin(icpCode));
	//	byte[] authcode = MD5Tools.getAuthCodebySeed(codeseed);
	//	return MD5Tools.md5bytes2string(authcode)+randomNo+icpCode;
	//}
	/**
	 * 把普通icpCode生成加密的icpCode,用md5
	 * @param icpCode            原始的icpcode
	 * @param randomNo           16位随机数
	 * @param icpKey             用于MD5加密icpCode的key
	 * @return
	 */
	public static String generateEncryptedICPCode(String icpCode,String randomNo,String icpKey) throws Exception{

		if (randomNo == null){
			randomNo = MD5Tools.md5bytes2string(MD5Tools.getAuthSeed(randomNoLength));
		}
		byte[] codeseed = MD5Tools.addbytes(icpCode,randomNo);
		codeseed = MD5Tools.addbytes(codeseed,icpKey);
		byte[] authcode = MD5Tools.getAuthCodebySeed(codeseed);
		return MD5Tools.md5bytes2string(authcode) + randomNo + icpCode;
	}
	/**
	 * 把普通icpCode生成加密的icpCode,用md5,后台产生新的icp时需要调用本接口
	 * @param icpCode            原始的icpcode
	 * @param icpKey             用于MD5加密icpCode的key
	 * @return
	 */
	//public static String generateEncryptedICPCode(String icpCode) throws Exception{

	//	byte[] authseed = MD5Tools.getAuthSeed(randomNoLength);
	//	byte[] codeseed = MD5Tools.addbytes(icpCode,authseed);
	//	codeseed = MD5Tools.addbytes(codeseed,getICPKeyfromOrigin(icpCode));
		//做加密
	//	byte[] authcode = MD5Tools.getAuthCodebySeed(codeseed);
	//	return MD5Tools.md5bytes2string(authcode)+MD5Tools.md5bytes2string(authseed)+icpCode;
	//}

	/**
	 * 在icp端返回的icpcode取出加密的部分
	 * @param icpCodeFromWebpro
	 * @return
	 */
	public static String getEncryptedICPCode(String icpCodeFromWebpro) throws Exception{
		//得到的icpcode长度不正确,返回null
		if (icpCodeFromWebpro.length() <= (32 + randomNoLength * 2)){
			throw new Exception("ICPCode(" + icpCodeFromWebpro +") is invalid!");
		}
		return icpCodeFromWebpro.substring(0,32);
	}

	/**
	 * 在icp端返回的icpcode取出随机数字
	 * @param icpCodeFromWebpro
	 * @return
	 */
	public static String getRandomNo(String icpCodeFromWebpro) throws Exception{
		if (icpCodeFromWebpro.length() <= (32 + randomNoLength * 2)){
			throw new Exception("ICPCode(" + icpCodeFromWebpro +") is invalid!");
		}
		return icpCodeFromWebpro.substring(32,32 + randomNoLength * 2);
	}

	/**
	 * 在icp端返回的icpcode取出ICPCode的原始code
	 * @param icpCodeFromWebpro
	 * @return
	 */
	public static String getOriginIcpCode(String icpCodeFromWebpro) throws Exception{
		if (icpCodeFromWebpro.length() <= (32 + randomNoLength * 2)){
			throw new Exception("ICPCode(" + icpCodeFromWebpro +") is invalid!");
		}
		return icpCodeFromWebpro.substring((32 + randomNoLength * 2),icpCodeFromWebpro.length());
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -