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

📄 .#fetionssomanager.java.1.6

📁 自己实现的AES和DES的加密算法。自己可以随意组成加密数据结构
💻 6
📖 第 1 页 / 共 3 页
字号:
		String corecreden = "";
		try {
			if (credenLevel == 1) {
				EncryptedByte encryptedbyte = new EncryptedByte();
				encryptedbyte.setUserType(Constant.USER_TYPE);
				encryptedbyte.setUserUri(uri);
				encryptedbyte.setDomain(domain);
				encryptedbyte.setUserIp(clientip);
				encryptedbyte.setUserMobileNo(String.valueOf(user.getMp()));
				encryptedbyte.setSignInTime(now.getTime());
				encryptedbyte.setSignInTimeOut(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
				encryptedbyte.setUserSid(""+user.getFid());
				encryptedbyte.setUserStatus("" + user.getStatus());
				DES des = new DES();
				byte[] inBuff = des.data2Byte(encryptedbyte);
				byte[] outBuff = des.encryptByDES(inBuff, ByteConvert.getKeyByStr(key));
//				byte[] dd = des.decryptByDES(outBuff, ByteConvert.getKeyByStr(key));
//				System.out.println(ByteConvert.getByteStr(dd));
//				EncryptedData ff = des.byte2date(dd);
				
				byte[] bresult = new byte[outBuff.length + 5];
				bresult[0] = (byte)coressikey.getFlag().intValue();
				byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
				System.arraycopy(bet, 0, bresult, 1, bet.length);
				System.arraycopy(outBuff, 0, bresult, 5, outBuff.length);	
				
				corecreden = BASE64.getBASE64(bresult).replaceAll("\r\n", "");
				
//				System.out.println(BASE64.getBASE64(bresult));
				///-----------------------------------------
//				String a = BASE64.getBASE64(bresult);
//				byte[] aa = BASE64.getFromBASE64(a.replaceAll("\r\n", ""));
//				byte[] bb = new byte[aa.length-5];
//				System.arraycopy(aa, 5, bb, 0, aa.length-5);
//				byte[] cc = des.decryptByDES(bb, ByteConvert.getKeyByStr(key));
//				System.out.println(ByteConvert.getByteStr(cc));
//				EncryptedData gg = des.byte2date(cc);
//				
				
			} else if (credenLevel == 2) {
				EncryptedByteV2 datav2 = new EncryptedByteV2();
				datav2.setUserTypeV2(Constant.USER_TYPE_V2);
				datav2.setCreateTime(now.getTime());
				datav2.setExpireTime(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
				datav2.setSid(user.getFid());
				datav2.setMobile(user.getMp());
				String logicPoolId = ""+user.getPoolid(); 
				datav2.setLogicalPoolId(Short.valueOf(logicPoolId));
				long lip = IpUtil.ipToLongValue(clientip);
				datav2.setUserIp(lip);
				datav2.setUserStatusV2(user.getStatus());
				datav2.setUserTypeV2((byte)0);
				byte[] inBuff = AES.encrypt(datav2.getByteV2(), key);
				
				byte[] bresult = new byte[inBuff.length + 5];
				bresult[0] = (byte)coressikey.getFlag().intValue();
				byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
				System.arraycopy(bet, 0, bresult, 1, bet.length);
				System.arraycopy(inBuff, 0, bresult, 5, inBuff.length);					
				
				corecreden = BASE64.getBASE64(bresult).replaceAll("\r\n", "");
			}
			
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		/* 保存cookie */
		if (!"".equals(corecreden)) {
			this.createSSOCookie(corecreden, Constant.SSO_COOKIE_MAXAGE);
			result = corecreden;
		}
		return result;
		
	}
	/**
	 * 生成核心域的AES认证串
	 * @param users
	 */
	public String createCoreCredenByAES(UserInfo user, String usertype) {
		String result = "";
		String coredomain = Constant.SSO_SERVER_DOMAIN;
		GcfgSsikeys coressikey = Constant.ssikeyMap.get(coredomain);
		if(coressikey==null) {
			List<GcfgSsikeys> list = SpringHelper.getFetionSsoService().getSsikeysList();
			for (int i = 0; i<list.size(); i++) {
				coressikey = (GcfgSsikeys)list.get(i);
				if(coressikey.getDomain().equals(coredomain)) {
					break;
				}
			}
		}
		if (coressikey == null) {
			return result; 
		}
		
		int flag = coressikey.getFlag() & 8;
		int keyid = coressikey.getFlag() & 3;
		String key = "";
		int credenLevel = 0;  
		if (flag == 0) {
			credenLevel = 1;
		} else {
			credenLevel = 2; 
		}		
		
		if (keyid == 0) {
			key = coressikey.getKey0();
		} else if (keyid == 1) {
			key = coressikey.getKey1();
		} else if (keyid == 2) {
			key = coressikey.getKey2();
		}
		Date now = new Date();
		
		String uri = request.getRequestURI();
		String domain = StringUtil.getValue(request.getParameter("domain"));
		String clientip = request.getRemoteAddr();
		String corecreden = "";
		credenLevel = 2;
		try {
			if (credenLevel == 1) {
				EncryptedByte encryptedbyte = new EncryptedByte();
				encryptedbyte.setUserType(Constant.USER_TYPE);
				encryptedbyte.setUserUri(uri);
				encryptedbyte.setDomain(domain);
				encryptedbyte.setUserIp(clientip);
				encryptedbyte.setUserMobileNo(String.valueOf(user.getMp()));
				encryptedbyte.setSignInTime(now.getTime());
				encryptedbyte.setSignInTimeOut(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
				encryptedbyte.setUserSid(String.valueOf(user.getFid()));
				encryptedbyte.setUserStatus("" + user.getStatus());
				DES des = new DES();
				byte[] inBuff = des.data2Byte(encryptedbyte);
				byte[] outBuff = des.encryptByDES(inBuff, ByteConvert.getKeyByStr(key));
				
				byte[] bresult = new byte[outBuff.length + 5];
				bresult[0] = (byte)coressikey.getFlag().intValue();
				byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
				System.arraycopy(bet, 0, bresult, 1, bet.length);
				System.arraycopy(outBuff, 0, bresult, 5, outBuff.length);	
				
				corecreden = BASE64.getBASE64(bresult).replaceAll("\r\n", "");
				
			} else if (credenLevel == 2) {
				EncryptedByteV2 datav2 = new EncryptedByteV2();
				datav2.setUserTypeV2(Constant.USER_TYPE_V2);
				datav2.setCreateTime(now.getTime());
				datav2.setExpireTime(this.getExpireTime());
				datav2.setSid(user.getFid());
				datav2.setMobile(user.getMp());
				String logicPoolId = ""+user.getPoolid();
				datav2.setLogicalPoolId(Short.valueOf(logicPoolId));
				long lip = IpUtil.ipToLongValue(clientip);
				datav2.setUserIp(lip);
				datav2.setUserStatusV2(user.getStatus());
				datav2.setUserTypeV2((byte)0);
				byte[] inBuff = AES.encrypt(datav2.getByteV2(), key);
				
				byte[] bresult = new byte[inBuff.length + 5];
				bresult[0] = (byte)coressikey.getFlag().intValue();
				byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
				System.arraycopy(bet, 0, bresult, 1, bet.length);
				System.arraycopy(inBuff, 0, bresult, 5, inBuff.length);		
				corecreden = BASE64.getBASE64(bresult).replaceAll("\r", "").replaceAll("\n", "");
			}
			
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		/* 保存cookie */
		if (!"".equals(corecreden)) {
			this.createSSOCookie(corecreden, Constant.SSO_COOKIE_MAXAGE);
			result = corecreden;
		}
		return result;
		
	}
	/**
	 * 取domain的凭证
	 * @param domain
	 * @param c
	 * @return
	 */
	public String getCredentail(String coredomain, String c) {

		String result = "";
		try {
			CredenResult credenresult = this.getCoreEncryptedData(c);
			if (credenresult == null  
					|| credenresult.getType() == null
					|| "0".equals(credenresult.getType())) {				
				return result;
			}
			Date now = new Date();
			GcfgSsikeys coressikey = Constant.ssikeyMap.get(coredomain);
			if(coressikey==null) {
				List<GcfgSsikeys> list = SpringHelper.getFetionSsoService().getSsikeysList();
				for (int i = 0; i<list.size(); i++) {
					coressikey = (GcfgSsikeys)list.get(i);
					if(coressikey.getDomain().equals(coredomain)) {
						break;
					}
				}
			}
			if (coressikey == null) {				
				return result;
			}
			int flag = coressikey.getFlag() & 8;
			int keyid = flag & 3;
			String key = "";
			int credenLevel = 0;  
			if (flag == 0) {
				credenLevel = 1;
			} else {
				credenLevel = 2; 
			}
			
			if (keyid == 0) {
				key = coressikey.getKey0();
			} else if (keyid == 1) {
				key = coressikey.getKey1();
			} else if (keyid == 2) {
				key = coressikey.getKey2();
			}			
			if ("1".equals(credenresult.getType())) {
				
				EncryptedData data = (EncryptedData)credenresult.getData();
				if (credenLevel == 1) {
					EncryptedByte encryptedbyte = new EncryptedByte();
					encryptedbyte.setUserType(Constant.USER_TYPE);
					encryptedbyte.setUserUri(data.getUserUri());
					encryptedbyte.setDomain(coredomain);
					encryptedbyte.setUserIp(data.getUserIp());
					encryptedbyte.setUserMobileNo(data.getUserMobileNo());
					encryptedbyte.setSignInTime(now.getTime());
					encryptedbyte.setSignInTimeOut(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
					encryptedbyte.setUserSid(data.getUserSid());
					encryptedbyte.setUserStatus(data.getUserStatus());
					DES des = new DES();
					byte[] inBuff = des.data2Byte(encryptedbyte);
					byte[] outBuff = des.encryptByDES(inBuff, ByteConvert.getKeyByStr(key));
					
					byte[] bresult = new byte[outBuff.length + 5];
					bresult[0] = (byte)flag;
					byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
					System.arraycopy(bet, 0, bresult, 1, bet.length);
					System.arraycopy(outBuff, 0, bresult, 5, outBuff.length);
					
					result = BASE64.getBASE64(bresult);
				} else if (credenLevel == 2) {
					EncryptedByteV2 datav2 = new EncryptedByteV2();
					datav2.setUserTypeV2(Constant.USER_TYPE_V2);
					datav2.setCreateTime(now.getTime());
					datav2.setExpireTime(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
					datav2.setSid(Integer.parseInt(data.getUserSid()));
					datav2.setMobile(Long.parseLong(data.getUserMobileNo()));
					String logicPoolId = "" + MobileUtil.getMobilePool(
							Long.parseLong(String.valueOf(data.getUserMobileNo())));
					datav2.setLogicalPoolId(Short.valueOf(logicPoolId));
					long lip = IpUtil.ipToLongValue(data.getUserIp());
					datav2.setUserIp(lip);
					datav2.setUserStatusV2(Integer.parseInt(data.getUserStatus()));
					datav2.setUserTypeV2((byte)0);
					byte[] inBuff = AES.encrypt(datav2.getByteV2(), key);
					
					byte[] bresult = new byte[inBuff.length + 5];
					bresult[0] = (byte)flag;
					byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
					System.arraycopy(bet, 0, bresult, 1, bet.length);
					System.arraycopy(inBuff, 0, bresult, 5, inBuff.length);					
					
					result = BASE64.getBASE64(bresult);
				}
			} else if ("2".equals(credenresult.getType())) {
				EncryptedByteV2 data = (EncryptedByteV2)credenresult.getData();
				if (credenLevel == 1) {
					EncryptedByte encryptedbyte = new EncryptedByte();
					encryptedbyte.setUserType(Constant.USER_TYPE);
					String uri = request.getRequestURI();
					encryptedbyte.setUserUri(uri);
					encryptedbyte.setDomain(coredomain);
					String ip = request.getRemoteAddr();
					encryptedbyte.setUserIp(ip);
					encryptedbyte.setUserMobileNo(new String(data.getMobile()));
					encryptedbyte.setSignInTime(now.getTime());
					encryptedbyte.setSignInTimeOut(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
					encryptedbyte.setUserSid(new String(data.getSid()));
					encryptedbyte.setUserStatus(new String(data.getUserStatusV2()));
					DES des = new DES();
					byte[] inBuff = des.data2Byte(encryptedbyte);
					byte[] outBuff = des.encryptByDES(inBuff, ByteConvert.getKeyByStr(key));
					
					byte[] bresult = new byte[outBuff.length + 5];
					bresult[0] = (byte)flag;
					byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
					System.arraycopy(bet, 0, bresult, 1, bet.length);
					System.arraycopy(outBuff, 0, bresult, 5, outBuff.length);
					
					result = BASE64.getBASE64(bresult);
				} else if (credenLevel == 2) {
					data.setUserTypeV2(Constant.USER_TYPE_V2);
					data.setCreateTime(now.getTime());
					data.setExpireTime(now.getTime() + Constant.SSO_COOKIE_MAXAGE);
					byte[] inBuff = AES.encrypt(data.getByteV2(), key);
					byte[] bresult = new byte[inBuff.length + 5];
					bresult[0] = (byte)flag;
					byte[] bet = ByteConvert.int2byte(Constant.SSO_COOKIE_MAXAGE);
					System.arraycopy(bet, 0, bresult, 1, bet.length);
					System.arraycopy(inBuff, 0, bresult, 5, inBuff.length);	
					
					result = BASE64.getBASE64(bresult);
				}
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return result;
	}
	/**
	 * 根据domain返回请求认证串
	 * @param domain
	 * @return 返回认证串
	 */
	public String getCredentail(String coredomain, UserInfo user) {
		String result = "";
		try {
			Date now = new Date();
			GcfgSsikeys coressikey = Constant.ssikeyMap.get(coredomain);
			if(coressikey==null) {
				List<GcfgSsikeys> list = SpringHelper.getFetionSsoService().getSsikeysList();
				for (int i = 0; i<list.size(); i++) {
					coressikey = (GcfgSsikeys)list.get(i);
					if(coressikey.getDomain().equals(coredomain)) {
						break;
					}
				}
			}

⌨️ 快捷键说明

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