亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ipmsg.java

?? 跨平臺文件傳輸工具源碼 跨平臺文件傳輸工具 跨平臺文件傳輸工具
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/* * IP Messenger Main Class *		1997/10/3 (C)Copyright T.Kazawa */package ipmsg;import JP.digitune.util.ResourceProperties;import JP.digitune.util.StringReplacer;import java.awt.*;//import jp.kyasu.awt.*;import java.awt.event.*;import java.io.*;import java.net.*;import java.util.*;import java.text.*;import java.math.*;import java.security.*;import java.security.interfaces.*;import java.security.spec.*;import javax.crypto.*;import javax.crypto.spec.*;public class IPMsg implements IPMComListener {	/*========== Constant Value ==========*/	public static final long IPMSG_COMMASK		= 0x000000ffL;	public static final long IPMSG_OPTMASK		= 0xffffff00L;		public static final long IPMSG_NOOPERATION	= 0x00000000L;		public static final long IPMSG_BR_ENTRY		= 0x00000001L;	public static final long IPMSG_BR_EXIT		= 0x00000002L;	public static final long IPMSG_ANSENTRY		= 0x00000003L;	public static final long IPMSG_BR_ABSENCE	= 0x00000004L;		public static final long IPMSG_BR_ISGETLIST = 0x00000018L;	public static final long IPMSG_OKGETLIST	= 0x00000015L;	public static final long IPMSG_GETLIST		= 0x00000016L;	public static final long IPMSG_ANSLIST		= 0x00000017L;		public static final long IPMSG_SENDMSG		= 0x00000020L;	public static final long IPMSG_RECVMSG		= 0x00000021L;		public static final long IPMSG_READMSG		= 0x00000030L;	public static final long IPMSG_DELMSG		= 0x00000031L;		public static final long IPMSG_GETINFO		= 0x00000040L;	public static final long IPMSG_SENDINFO		= 0x00000041L;		public static final long IPMSG_GETPUBKEY	= 0x00000072L;	public static final long IPMSG_ANSPUBKEY	= 0x00000073L;		// other opt	public static final long IPMSG_ABSENCEOPT		= 0x00000100L;	public static final long IPMSG_SERVEROPT		= 0x00000200L;	public static final long IPMSG_DIALUPOPT		= 0x00010000L;	public static final long IPMSG_ENCRYPTOPT		= 0x00400000L;	public static final long IPMSG_ENCRYPTOPTOLD	= 0x00800000L;		// send opt	public static final long IPMSG_SENDCHECKOPT = 0x00000100L;	public static final long IPMSG_SECRETOPT	= 0x00000200L;	public static final long IPMSG_BROADCASTOPT = 0x00000400L;	public static final long IPMSG_MULTICASTOPT = 0x00000800L;	public static final long IPMSG_NOPOPUPOPT	= 0x00001000L;	public static final long IPMSG_AUTORETOPT	= 0x00002000L;	public static final long IPMSG_RETRYOPT		= 0x00004000L;	public static final long IPMSG_PASSWORDOPT	= 0x00008000L;	public static final long IPMSG_NOLOGOPT		= 0x00020000L;	public static final long IPMSG_NEWMUTIOPT	= 0x00040000L;	// encrypt opt	public static final long IPMSG_RSA_512		= 0x00000001L;	public static final long IPMSG_RSA_1024		= 0x00000002L;	public static final long IPMSG_RSA_2048		= 0x00000004L;	public static final long IPMSG_RC2_40		= 0x00001000L;	public static final long IPMSG_RC2_128		= 0x00004000L;	public static final long IPMSG_RC2_256		= 0x00008000L;	public static final long IPMSG_BLOWFISH_128 = 0x00020000L;	public static final long IPMSG_BLOWFISH_256 = 0x00040000L;		public static final int	 MAXBUF				= 8192;	/*========== end ==========*/		private static final String P_FILE = "runtime.properties";	private ResourceProperties pref = new ResourceProperties("ipmsg.resources");		private boolean state = false;	private InetAddress localaddr;	private long serial = 0;	private String user, host;	private Hashtable userlist = new Hashtable();	private Hashtable dialupmember = new Hashtable();	private Hashtable ipmlistener = new Hashtable();	private Hashtable recentsend = new Hashtable();	private int port;	private int[] ports;	private DatagramSocket dsock;	private IPMProxy proxy;	private int receivecount = 0;	private class CryptoInfo {		private long cap = 0L;		private PublicKey publickey = null;		public CryptoInfo(long cap, PublicKey publickey) {			this.cap = cap;			this.publickey = publickey;		}		public long getCap() {			return cap;		}		public PublicKey getPublicKey() {			return publickey;		}	}	private boolean hasJCE = true;	private Hashtable publickeys = new Hashtable();	private PublicKey publickey = null;	private PrivateKey privatekey = null;	private long getCryptoCaps() {		return IPMSG_RSA_512 | IPMSG_RSA_1024			| IPMSG_RC2_40 | IPMSG_RC2_128			| IPMSG_BLOWFISH_128;	}		String makeKey(IPMComEvent ipme) {		IPMPack tmppack = ipme.getPack();		String key = ipme.getIPMAddress() + ":"			+ tmppack.getUser() + ":" + tmppack.getHost();		return key;	}		public void receive(IPMComEvent ipme) {		if (!state)			return;		IPMPack tmppack = ipme.getPack();		long opt = tmppack.getCommand() & IPMSG_OPTMASK;				switch ((int) (tmppack.getCommand() & IPMSG_COMMASK)) {		case (int) IPMSG_BR_ENTRY:			String nickname = pref.getProperty("nickName");			IPMSend.send(dsock, makePack(IPMSG_ANSENTRY | getEntryOpt()				, nickname, true), ipme.getIPMAddress());		case (int) IPMSG_ANSENTRY:			if (publickey != null)				IPMSend.send(dsock, makePack(IPMSG_GETPUBKEY					, Long.toString(getCryptoCaps(), 16).toUpperCase(), false)					, ipme.getIPMAddress());		case (int) IPMSG_BR_ABSENCE:			userlist.put(makeKey(ipme), ipme);			if ((opt & IPMSG_DIALUPOPT) != 0				&& dialupmember.get(ipme.getIPMAddress().toString()) == null)				dialupmember.put(ipme.getIPMAddress().toString()					, ipme.getIPMAddress());			IPMEvent ie = new IPMEvent(this, IPMEvent.UPDATELIST_EVENT				, new Date(System.currentTimeMillis()), ipme);			invokeListener(ie);			break;		case (int) IPMSG_BR_EXIT:			userlist.remove(makeKey(ipme));			dialupmember.remove(ipme.getIPMAddress().toString());			publickeys.remove(ipme.getIPMAddress().toString());			ie = new IPMEvent(this, IPMEvent.UPDATELIST_EVENT				, new Date(System.currentTimeMillis()), ipme);			invokeListener(ie);			break;		case (int) IPMSG_SENDMSG:			if ((opt & IPMSG_SENDCHECKOPT) != 0)				IPMSend.send(dsock					, makePack(IPMSG_RECVMSG | IPMSG_AUTORETOPT					, new Long(tmppack.getNo()).toString(), false)					, ipme.getIPMAddress());			if (new Boolean(pref.getProperty("absenceState")).booleanValue()				&& (opt & IPMSG_AUTORETOPT) == 0)				try {					String tmpmsg = pref.getProperty("absenceMsg");					if (!tmpmsg.equals(""))						IPMSend.send(dsock							, makePack(IPMSG_SENDMSG | IPMSG_AUTORETOPT							, tmpmsg, false), ipme.getIPMAddress());				} catch (MissingResourceException ex) {}			if (!userlist.containsKey(makeKey(ipme))) {				nickname = pref.getProperty("nickName");				IPMSend.send(dsock					, makePack(IPMSG_BR_ENTRY | IPMSG_AUTORETOPT					| getEntryOpt(), nickname, true)					, ipme.getIPMAddress());			}			if ((opt & IPMSG_ENCRYPTOPT) != 0)				tmppack.setExtra(decryptMessage(tmppack.getExtra()));			ie = new IPMEvent(this, IPMEvent.RECEIVEMSG_EVENT				, new Date(System.currentTimeMillis()), ipme);			invokeListener(ie);			break;		case (int) IPMSG_RECVMSG:			try {				Long tmpLong = new Long(tmppack.getExtra());				NormalSend ns = (NormalSend) recentsend.get(tmpLong);				if (ns != null) {					ns.receiveReply();					recentsend.remove(tmpLong);				}			} catch (NumberFormatException ex) {}			break;		case (int) IPMSG_READMSG:			ie = new IPMEvent(this, IPMEvent.READMSG_EVENT				, new Date(System.currentTimeMillis()), ipme);			invokeListener(ie);			break;		case (int) IPMSG_DELMSG:			ie = new IPMEvent(this, IPMEvent.DELETEMSG_EVENT				, new Date(System.currentTimeMillis()), ipme);			invokeListener(ie);			break;		case (int) IPMSG_GETPUBKEY:			IPMSend.send(dsock, makePack(IPMSG_ANSPUBKEY				, answerPublicKey(ipme.getPack()), false)				, ipme.getIPMAddress());			break;		case (int) IPMSG_ANSPUBKEY:			receivePublicKey(ipme);			break;		case (int) IPMSG_GETINFO:			IPMSend.send(dsock, makePack(IPMSG_SENDINFO				, pref.getProperty("version") + " ("				+ System.getProperty("java.vendor") + " ver."				+ System.getProperty("java.version") + "/"				+ System.getProperty("os.name") + " "				+ System.getProperty("os.version") + ")", false)				, ipme.getIPMAddress());			break;		}	}		String[] cutCString(String cstr) {		StringTokenizer tokenizer = new StringTokenizer(cstr, ",");		String[] tmpstrs = new String[tokenizer.countTokens()];		for (int i = 0; i < tmpstrs.length; i++)			tmpstrs[i] = tokenizer.nextToken().trim();		return tmpstrs;	}		IPMPack makePack(long com, String extra, boolean groupflag) {		if (groupflag)			return new IPMPack(1, getSerial(), user, host, com, extra				, pref.getProperty("groupName"));		else			return new IPMPack(1, getSerial(), user, host, com, extra, null);	}		synchronized long getSerial() {		return (System.currentTimeMillis() >> 10) + serial++;	}		IPMAddress[] getBroadcastAddr() {		IPMAddress[] tmpaddr;		int dialup = dialupmember.size();		try {			String tmpstr = pref.getProperty("broadcastAddr");			String[] strbroadcasts = cutCString("255.255.255.255," + tmpstr);			tmpaddr = new IPMAddress[strbroadcasts.length * ports.length				+ dialup];			for (int i = 0; i < strbroadcasts.length; i++)				for (int j = 0; j < ports.length; j++)					try {						tmpaddr[i * ports.length + j]							= new IPMAddress(ports[j]								, InetAddress.getByName(strbroadcasts[i]));					} catch (UnknownHostException ex) {						tmpaddr[i * ports.length + j] = null;					}		} catch (MissingResourceException ex) {			tmpaddr = new IPMAddress[ports.length + dialup];			for (int i = 0; i < ports.length; i++)				try {					tmpaddr[i] = new IPMAddress(ports[i]						, InetAddress.getByName("255.255.255.255"));				} catch (UnknownHostException exx) {					tmpaddr[i] = null;				}		}		Enumeration enum = dialupmember.elements();		for (int i = 0; i < dialup; i++)			tmpaddr[i + tmpaddr.length - dialup]				= (IPMAddress) enum.nextElement();		return tmpaddr;	}		synchronized void invokeListener(IPMEvent tmpevent) {		for (Enumeration enum = ipmlistener.elements()			; enum.hasMoreElements(); ) {			IPMListener listener = (IPMListener) enum.nextElement();			listener.eventOccured(tmpevent);		}	}	private static String bytesToString(byte[] b) {		StringBuffer strbuf = new StringBuffer();		for (int i = 0; i < b.length; i++) {			int tmpb = (b[i] < 0) ? ((int) b[i]) + 0x100 : b[i];			strbuf.append(Integer.toString((int)(tmpb / 16),16).toUpperCase());			strbuf.append(Integer.toString((int)(tmpb % 16),16).toUpperCase());		}		return new String(strbuf);	}	byte[] stringToBytes(String src) {		byte[] buf = new byte[src.length() / 2];		for (int i = 0; i < src.length(); i += 2) {			int b = Integer.parseInt(src.substring(i, ((i + 2) > src.length())				? src.length() : i + 2), 16);			b = (b > 127) ? b - 0x100 : b;			buf[i / 2] = (byte) b;		}		return buf;	}	byte[] reverseBytes(byte[] src) {		for (int i = 0; i < src.length / 2; i++) {			byte b = src[i];			src[i] = src[src.length - i - 1];			src[src.length - i - 1] = b;		}		return src;	}	String encryptMessage(CryptoInfo ci, String src) {		if (ci == null || ci.getPublicKey() == null)			throw new IllegalStateException("publickey unknown.");		try {			long flag = 0L;			int key_length = ci.getPublicKey().getEncoded().length;			if (key_length > 200)				flag |= IPMSG_RSA_2048;			else if (key_length > 100)				flag |= IPMSG_RSA_1024;			else				flag |= IPMSG_RSA_512;			StringBuffer strbuf = new StringBuffer();			SecretKey secretkey = null;			String cipher_name = null;			if ((ci.getCap() & IPMSG_BLOWFISH_128) != 0) {				flag |= IPMSG_BLOWFISH_128;				KeyGenerator kg = KeyGenerator.getInstance("Blowfish");				kg.init(128);				secretkey = kg.generateKey();				cipher_name = pref.getProperty("Cipher2");			} else if ((ci.getCap() & IPMSG_RC2_128) != 0) {				flag |= IPMSG_RC2_128;				KeyGenerator kg = KeyGenerator.getInstance("RC2");				kg.init(128);				secretkey = kg.generateKey();				cipher_name = pref.getProperty("Cipher3");			} else if ((ci.getCap() & IPMSG_RC2_40) != 0) {				flag |= IPMSG_RC2_40;				KeyGenerator kg = KeyGenerator.getInstance("RC2");				kg.init(40);				secretkey = kg.generateKey();				cipher_name = pref.getProperty("Cipher3");			} else {				throw new IllegalStateException("no cap!");			}			strbuf.append(Long.toString(flag, 16).toUpperCase());			strbuf.append(":");			Cipher c = Cipher.getInstance(pref.getProperty("Cipher1"));			c.init(Cipher.ENCRYPT_MODE, ci.getPublicKey());			byte[] keydata = c.doFinal(secretkey.getEncoded());			strbuf.append(bytesToString(keydata));			strbuf.append(":");			c = Cipher.getInstance(cipher_name);			IvParameterSpec iv = new IvParameterSpec(new byte[8]);			c.init(Cipher.ENCRYPT_MODE, secretkey, iv);			byte[] msgdata = c.doFinal(src.getBytes("SJIS"));			strbuf.append(bytesToString(msgdata));			return new String(strbuf);		} catch (Exception ex) {			ex.printStackTrace();		}		return src;	}	String decryptMessage(String src) {		if (privatekey == null)			return src;		try {			StringTokenizer token = new StringTokenizer(src, ":");			long cap = Long.parseLong(token.nextToken().toLowerCase(), 16);			String cipher_name = pref.getProperty("Cipher2");			if ((cap & (IPMSG_BLOWFISH_128 | IPMSG_BLOWFISH_256)) == 0) {				cipher_name = pref.getProperty("Cipher3");			}			byte[] keydata = stringToBytes(token.nextToken());			byte[] msgdata = stringToBytes(token.nextToken());			Cipher c = Cipher.getInstance(pref.getProperty("Cipher1"));			c.init(Cipher.DECRYPT_MODE, privatekey);			byte[] skey = c.doFinal(keydata);			c = Cipher.getInstance(cipher_name);			IvParameterSpec iv = new IvParameterSpec(new byte[8]);			SecretKeySpec sks1 = new SecretKeySpec(skey				, pref.getProperty("Cipher2").substring(0				, pref.getProperty("Cipher2").indexOf("/")));			c.init(Cipher.DECRYPT_MODE, sks1, iv);			byte[] msg = c.doFinal(msgdata);			return new String(msg, "SJIS");		} catch (Exception ex) {			ex.printStackTrace();			return "decrypt error.";		}	}	String answerPublicKey(IPMPack pack) {		if (publickey == null)			return "0";		StringBuffer result = new StringBuffer();		try {			result.append(Long.toString(getCryptoCaps(), 16).toUpperCase());			result.append(":");			result.append(				makeRSAPublicKeyString((RSAPublicKey) publickey));			return new String(result);		} catch (Exception ex) {			ex.printStackTrace();			return "0";		}	}	void receivePublicKey(IPMComEvent ipme) {		if (publickey == null)			return;		try {			StringTokenizer token				= new StringTokenizer(ipme.getPack().getExtra(), ":");			long cap = Long.parseLong(token.nextToken(), 16);			KeyFactory kf = KeyFactory.getInstance("RSA");

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费看片| 欧美日韩国产高清一区二区三区| 欧美成人video| 紧缚奴在线一区二区三区| 久久综合久久99| 国产成人欧美日韩在线电影| 国产精品成人免费精品自在线观看| 成人av网址在线观看| 亚洲欧美日韩人成在线播放| 欧美三级电影在线看| 奇米精品一区二区三区在线观看 | 亚洲午夜免费视频| 69久久夜色精品国产69蝌蚪网| 免费人成在线不卡| 久久夜色精品一区| 91亚洲永久精品| 日韩国产欧美三级| 欧美激情在线观看视频免费| 色视频成人在线观看免| 日韩电影在线免费观看| 久久久精品人体av艺术| 色婷婷精品久久二区二区蜜臀av| 午夜电影网亚洲视频| 久久婷婷成人综合色| 91视视频在线直接观看在线看网页在线看| 亚洲一区二区三区中文字幕在线| 日韩一区二区三区三四区视频在线观看| 国产呦萝稀缺另类资源| 亚洲精品你懂的| 欧美成人福利视频| 91激情在线视频| 韩国v欧美v亚洲v日本v| 一区二区三区四区视频精品免费 | 成人免费视频国产在线观看| 亚洲一卡二卡三卡四卡| 久久久久久久久久电影| 欧美日韩一区三区| 成人爱爱电影网址| 久久精品国产精品亚洲红杏| 亚洲精选视频在线| 精品国精品国产尤物美女| 91福利在线看| 丁香天五香天堂综合| 欧美aaaaa成人免费观看视频| 中文字幕中文字幕一区| 日韩视频一区二区在线观看| 欧美自拍偷拍午夜视频| 国产盗摄女厕一区二区三区| 秋霞电影网一区二区| 亚洲精品欧美专区| 国产日韩综合av| 日韩三级电影网址| 欧美丰满美乳xxx高潮www| 97国产一区二区| 国产精品羞羞答答xxdd| 免费在线成人网| 午夜精品福利久久久| 亚洲另类色综合网站| 国产精品天美传媒| 国产亚洲制服色| 精品日韩一区二区三区免费视频| 欧美性受xxxx黑人xyx性爽| 99久久精品免费看| 国产·精品毛片| 国产精品自拍在线| 国产一区二区三区黄视频| 麻豆精品新av中文字幕| 日本不卡1234视频| 蜜臀91精品一区二区三区| 日韩电影在线观看电影| 亚洲超丰满肉感bbw| 成人丝袜高跟foot| 国产成人自拍在线| 国产成人免费高清| 高清shemale亚洲人妖| 国产福利一区在线| 国产福利视频一区二区三区| 国产永久精品大片wwwapp| 极品销魂美女一区二区三区| 久久99精品久久久久久| 极品少妇一区二区| 国产精品中文欧美| 成人免费视频播放| 99热精品国产| 色综合天天视频在线观看| 91香蕉国产在线观看软件| 色国产综合视频| 欧美日韩一级二级三级| 91精品在线免费| 欧美一级一区二区| 久久久久久一二三区| 国产精品麻豆视频| 亚洲乱码日产精品bd| 亚洲h在线观看| 精品一区二区日韩| 成人性生交大片免费看在线播放| 99久久久免费精品国产一区二区| 色婷婷精品久久二区二区蜜臀av | 伊人一区二区三区| 91视频在线观看| 欧美在线观看一区二区| 日韩一区二区免费电影| 国产婷婷色一区二区三区四区| 中文字幕中文乱码欧美一区二区| 亚洲精品中文字幕在线观看| 亚洲一区自拍偷拍| 精品一区二区综合| 99久久免费国产| 欧美一卡2卡3卡4卡| 亚洲国产精品成人综合| 亚洲一区二区三区在线| 精品一区二区三区在线观看| av不卡一区二区三区| 在线不卡欧美精品一区二区三区| 精品噜噜噜噜久久久久久久久试看| 亚洲国产精品精华液ab| 亚瑟在线精品视频| 国产精品18久久久| 欧美日韩aaaaa| 国产欧美一区二区在线| 午夜精品久久久久久久99水蜜桃| 国产一区激情在线| 欧美日免费三级在线| 久久久不卡网国产精品一区| 亚洲资源中文字幕| 粉嫩在线一区二区三区视频| 欧美人牲a欧美精品| 国产精品麻豆99久久久久久| 免费在线看一区| 色综合 综合色| 久久久91精品国产一区二区精品| 亚洲综合在线第一页| 国产成人av电影| 欧美一区二区免费| 亚洲一区二区精品3399| 国产成人久久精品77777最新版本| 欧美日韩精品欧美日韩精品| 国产精品美女久久久久久久| 麻豆91免费看| 精品视频1区2区| 亚洲日本va午夜在线影院| 黄色日韩三级电影| 8v天堂国产在线一区二区| 日韩美女视频一区二区| 国产成人免费在线观看| 精品少妇一区二区| 青青草伊人久久| 欧美日韩国产高清一区二区| 亚洲欧美日韩成人高清在线一区| 国产aⅴ精品一区二区三区色成熟| 亚洲动漫第一页| 在线成人免费观看| 亚洲欧美国产毛片在线| 国产激情91久久精品导航| 制服视频三区第一页精品| 中文字幕一区二区三| 韩日精品视频一区| 日韩视频免费观看高清在线视频| 亚洲一区二区精品视频| 在线观看免费一区| 日韩一区中文字幕| 成人h精品动漫一区二区三区| 久久综合九色综合久久久精品综合| 蜜桃av一区二区在线观看| 欧美一区午夜精品| 91麻豆国产自产在线观看| 国产免费观看久久| 国产91精品一区二区| 国产亚洲欧美一级| 国产成人在线观看免费网站| 国产亚洲欧美日韩日本| 国产高清精品在线| 中文av一区二区| av电影在线观看不卡| 亚洲视频一区在线| 在线欧美日韩精品| 日韩电影网1区2区| 日韩欧美aaaaaa| 国产麻豆成人传媒免费观看| 久久免费电影网| www.成人网.com| 有坂深雪av一区二区精品| 欧美日韩三级在线| 乱中年女人伦av一区二区| 久久蜜臀精品av| 91在线国内视频| 亚洲成人综合视频| 日韩欧美电影一区| 成人一区二区三区在线观看| 中文字幕亚洲欧美在线不卡| 欧美性猛片aaaaaaa做受| 日韩黄色免费电影| 久久免费视频色| 91麻豆免费看片| 丝袜美腿高跟呻吟高潮一区| 精品粉嫩aⅴ一区二区三区四区| 国产99精品国产| 亚洲图片一区二区| 精品国产伦一区二区三区免费 | 欧美日韩精品综合在线|