?? icpcodemgr.java
字號(hào):
// ----------------------------------------------------------------------------
// $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;
//用于對(duì)ICPCode進(jìn)行MD5加密的key,保存于服務(wù)器端,唯一
private ICPCodeMgr() {
}
/**
* 根據(jù)沒(méi)有加密的icpCode,從mapping中讀取icpKey
* @param originalICPCode
* @return
*/
//public static String getICPKeyfromOrigin(String originalICPCode) throws Exception{
// return ICPCodeMapping.getInstance().getICPKeyfromDB(originalICPCode);
//}
/**
* 取得加過(guò)密的icpCode,取得沒(méi)有加密的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位隨機(jī)數(shù)
* @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位隨機(jī)數(shù)
* @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,后臺(tái)產(chǎn)生新的icp時(shí)需要調(diào)用本接口
* @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長(zhǎng)度不正確,返回null
if (icpCodeFromWebpro.length() <= (32 + randomNoLength * 2)){
throw new Exception("ICPCode(" + icpCodeFromWebpro +") is invalid!");
}
return icpCodeFromWebpro.substring(0,32);
}
/**
* 在icp端返回的icpcode取出隨機(jī)數(shù)字
* @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());
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -