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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? security.java

?? mysql jdbc驅動程序 mysql jdbc驅動程序 mysql jdbc驅動程序 mysql jdbc驅動程序
?? JAVA
字號:
/* Copyright (C) 2002-2004 MySQL AB This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as  published by the Free Software Foundation. There are special exceptions to the terms and conditions of the GPL  as it is applied to this software. View the full text of the  exception in file EXCEPTIONS-CONNECTOR-J in the directory of this  software distribution. 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, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package com.mysql.jdbc;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * Methods for doing secure authentication with MySQL-4.1 and newer. *  * @author Mark Matthews *  * @version $Id: Security.java 3726 2005-05-19 15:52:24Z mmatthews $ */class Security {	private static final char PVERSION41_CHAR = '*';	private static final int SHA1_HASH_SIZE = 20;	/**	 * Returns hex value for given char	 */	private static int charVal(char c) {		return ((c >= '0') && (c <= '9')) ? (c - '0')				: (((c >= 'A') && (c <= 'Z')) ? (c - 'A' + 10) : (c - 'a' + 10));	}	/*	 * Convert password in salted form to binary string password and hash-salt	 * For old password this involes one more hashing	 * 	 * SYNOPSIS get_hash_and_password() salt IN Salt to convert from pversion IN	 * Password version to use hash OUT Store zero ended hash here bin_password	 * OUT Store binary password here (no zero at the end)	 * 	 * RETURN 0 for pre 4.1 passwords !0 password version char for newer	 * passwords	 */	/**	 * Creates key from old password to decode scramble Used in 4.1	 * authentication with passwords stored pre-4.1 hashing.	 * 	 * @param passwd	 *            the password to create the key from	 * 	 * @return 20 byte generated key	 * 	 * @throws NoSuchAlgorithmException	 *             if the message digest 'SHA-1' is not available.	 */	static byte[] createKeyFromOldPassword(String passwd)			throws NoSuchAlgorithmException {		/* At first hash password to the string stored in password */		passwd = makeScrambledPassword(passwd);		/* Now convert it to the salt form */		int[] salt = getSaltFromPassword(passwd);		/* Finally get hash and bin password from salt */		return getBinaryPassword(salt, false);	}	/**	 * DOCUMENT ME!	 * 	 * @param salt	 *            DOCUMENT ME!	 * @param usingNewPasswords	 *            DOCUMENT ME!	 * 	 * @return DOCUMENT ME!	 * 	 * @throws NoSuchAlgorithmException	 *             if the message digest 'SHA-1' is not available.	 */	static byte[] getBinaryPassword(int[] salt, boolean usingNewPasswords)			throws NoSuchAlgorithmException {		int val = 0;		byte[] binaryPassword = new byte[SHA1_HASH_SIZE]; /*															 * Binary password															 * loop pointer															 */		if (usingNewPasswords) /* New password version assumed */{			int pos = 0;			for (int i = 0; i < 4; i++) /* Iterate over these elements */{				val = salt[i];				for (int t = 3; t >= 0; t--) {					binaryPassword[pos++] = (byte) (val & 255);					val >>= 8; /* Scroll 8 bits to get next part */				}			}			return binaryPassword;		}		int offset = 0;		for (int i = 0; i < 2; i++) /* Iterate over these elements */{			val = salt[i];			for (int t = 3; t >= 0; t--) {				binaryPassword[t + offset] = (byte) (val % 256);				val >>= 8; /* Scroll 8 bits to get next part */			}			offset += 4;		}		MessageDigest md = MessageDigest.getInstance("SHA-1"); //$NON-NLS-1$		md.update(binaryPassword, 0, 8);		return md.digest();	}	private static int[] getSaltFromPassword(String password) {		int[] result = new int[6];		if ((password == null) || (password.length() == 0)) {			return result;		}		if (password.charAt(0) == PVERSION41_CHAR) {			// new password			String saltInHex = password.substring(1, 5);			int val = 0;			for (int i = 0; i < 4; i++) {				val = (val << 4) + charVal(saltInHex.charAt(i));			}			return result;		}		int resultPos = 0;		int pos = 0;		int length = password.length();		while (pos < length) {			int val = 0;			for (int i = 0; i < 8; i++) {				val = (val << 4) + charVal(password.charAt(pos++));			}			result[resultPos++] = val;		}		return result;	}	private static String longToHex(long val) {		String longHex = Long.toHexString(val);		int length = longHex.length();		if (length < 8) {			int padding = 8 - length;			StringBuffer buf = new StringBuffer();			for (int i = 0; i < padding; i++) {				buf.append("0"); //$NON-NLS-1$			}			buf.append(longHex);			return buf.toString();		}		return longHex.substring(0, 8);	}	/**	 * Creates password to be stored in user database from raw string.	 * 	 * Handles Pre-MySQL 4.1 passwords.	 * 	 * @param password	 *            plaintext password	 * 	 * @return scrambled password	 * 	 * @throws NoSuchAlgorithmException	 *             if the message digest 'SHA-1' is not available.	 */	static String makeScrambledPassword(String password)			throws NoSuchAlgorithmException {		long[] passwordHash = Util.newHash(password);		StringBuffer scramble = new StringBuffer();		scramble.append(longToHex(passwordHash[0]));		scramble.append(longToHex(passwordHash[1]));		return scramble.toString();	}	/**	 * Encrypt/Decrypt function used for password encryption in authentication	 * 	 * Simple XOR is used here but it is OK as we crypt random strings	 * 	 * @param from	 *            IN Data for encryption	 * @param to	 *            OUT Encrypt data to the buffer (may be the same)	 * @param password	 *            IN Password used for encryption (same length)	 * @param length	 *            IN Length of data to encrypt	 */	static void passwordCrypt(byte[] from, byte[] to, byte[] password,			int length) {		int pos = 0;		while ((pos < from.length) && (pos < length)) {			to[pos] = (byte) (from[pos] ^ password[pos]);			pos++;		}	}	/**	 * Stage one password hashing, used in MySQL 4.1 password handling	 * 	 * @param password	 *            plaintext password	 * 	 * @return stage one hash of password	 * 	 * @throws NoSuchAlgorithmException	 *             if the message digest 'SHA-1' is not available.	 */	static byte[] passwordHashStage1(String password)			throws NoSuchAlgorithmException {		MessageDigest md = MessageDigest.getInstance("SHA-1"); //$NON-NLS-1$		StringBuffer cleansedPassword = new StringBuffer();		int passwordLength = password.length();		for (int i = 0; i < passwordLength; i++) {			char c = password.charAt(i);			if ((c == ' ') || (c == '\t')) {				continue; /* skip space in password */			}			cleansedPassword.append(c);		}		return md.digest(cleansedPassword.toString().getBytes());	}	/**	 * Stage two password hashing used in MySQL 4.1 password handling	 * 	 * @param hash	 *            from passwordHashStage1	 * @param salt	 *            salt used for stage two hashing	 * 	 * @return result of stage two password hash	 * 	 * @throws NoSuchAlgorithmException	 *             if the message digest 'SHA-1' is not available.	 */	static byte[] passwordHashStage2(byte[] hashedPassword, byte[] salt)			throws NoSuchAlgorithmException {		MessageDigest md = MessageDigest.getInstance("SHA-1"); //$NON-NLS-1$		// hash 4 bytes of salt		md.update(salt, 0, 4);		md.update(hashedPassword, 0, SHA1_HASH_SIZE);		return md.digest();	}	// SERVER: public_seed=create_random_string()	// send(public_seed)	//	// CLIENT: recv(public_seed)	// hash_stage1=sha1("password")	// hash_stage2=sha1(hash_stage1)	// reply=xor(hash_stage1, sha1(public_seed,hash_stage2)	//	// // this three steps are done in scramble()	//	// send(reply)	//	//	// SERVER: recv(reply)	// hash_stage1=xor(reply, sha1(public_seed,hash_stage2))	// candidate_hash2=sha1(hash_stage1)	// check(candidate_hash2==hash_stage2)	static byte[] scramble411(String password, String seed)			throws NoSuchAlgorithmException {		MessageDigest md = MessageDigest.getInstance("SHA-1"); //$NON-NLS-1$		byte[] passwordHashStage1 = md.digest(password.getBytes());		md.reset();		byte[] passwordHashStage2 = md.digest(passwordHashStage1);		md.reset();		byte[] seedAsBytes = seed.getBytes(); // for debugging		md.update(seedAsBytes);		md.update(passwordHashStage2);		byte[] toBeXord = md.digest();		int numToXor = toBeXord.length;		for (int i = 0; i < numToXor; i++) {			toBeXord[i] = (byte) (toBeXord[i] ^ passwordHashStage1[i]);		}		return toBeXord;	}	/**	 * Prevent construction.	 */	private Security() {		super();	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99蜜桃精品| 色综合天天综合网天天看片| 国产成人丝袜美腿| 欧美日韩电影一区| 综合中文字幕亚洲| 国产风韵犹存在线视精品| 欧美日韩在线综合| 中文字幕五月欧美| 国产精品一区专区| 日韩精品在线网站| 天涯成人国产亚洲精品一区av| av网站一区二区三区| 欧美xfplay| 免费不卡在线观看| 91精品欧美福利在线观看| 一区二区三区中文字幕精品精品| 国产一区二区在线电影| 日韩免费在线观看| 日本vs亚洲vs韩国一区三区| 欧美日本视频在线| 亚洲成人第一页| 在线视频欧美精品| 亚洲精品亚洲人成人网| 91在线精品一区二区三区| 国产日产欧美一区二区视频| 激情小说欧美图片| 久久伊人中文字幕| 国产一区视频网站| 国产亚洲人成网站| 国产999精品久久久久久| 精品国产一区二区三区四区四| 青青草国产成人av片免费| 欧美精品黑人性xxxx| 丝瓜av网站精品一区二区 | 激情久久五月天| 欧美精品在线一区二区三区| 午夜激情综合网| 在线不卡一区二区| 免费一级片91| 久久婷婷综合激情| 不卡电影免费在线播放一区| 中文字幕欧美一区| 91久久国产最好的精华液| 午夜成人免费电影| 日韩一区二区三区av| 精品在线亚洲视频| 国产日韩欧美精品在线| 99九九99九九九视频精品| 亚洲精品你懂的| 欧美日韩不卡在线| 国产精品888| 自拍偷拍欧美激情| 欧美精品视频www在线观看 | 菠萝蜜视频在线观看一区| 国产精品麻豆视频| 在线亚洲精品福利网址导航| 亚洲.国产.中文慕字在线| 日韩欧美高清在线| 国产不卡一区视频| 亚洲专区一二三| 日韩欧美国产午夜精品| 成人精品一区二区三区四区 | 欧美国产精品劲爆| 91搞黄在线观看| 韩国精品主播一区二区在线观看| 欧美激情中文字幕| 欧美日本在线观看| 丁香五精品蜜臀久久久久99网站| 亚洲精品国产精华液| 欧美大尺度电影在线| 99re8在线精品视频免费播放| 亚洲国产精品影院| 久久精品视频一区| 欧美久久久一区| 99在线热播精品免费| 久国产精品韩国三级视频| 国产精品久久久久婷婷| 欧美一区二区私人影院日本| 99国产精品久久久久久久久久 | 欧美日韩综合不卡| 国产精品99久久久久久宅男| 五月天一区二区| 亚洲欧美另类小说视频| 欧美精品一区二区三区在线播放 | 99免费精品在线观看| 美女一区二区久久| 夜夜嗨av一区二区三区四季av| 久久亚区不卡日本| 欧美高清视频不卡网| 91丨porny丨首页| 国产麻豆精品theporn| 奇米色一区二区三区四区| 一区二区三区不卡在线观看| 中文字幕欧美三区| 精品国产一区二区三区不卡 | 91麻豆国产自产在线观看| 国产一区在线观看麻豆| 美日韩一级片在线观看| 偷拍与自拍一区| 亚洲资源中文字幕| 亚洲精品成人悠悠色影视| 中文字幕精品综合| 久久久国产精华| 精品欧美久久久| 日韩一二三区不卡| 91精品免费在线观看| 91精品国产综合久久婷婷香蕉| 91久久精品一区二区二区| 成人国产亚洲欧美成人综合网| 国产精品一线二线三线| 国产综合色视频| 韩国av一区二区三区在线观看| 日本不卡视频在线观看| 奇米精品一区二区三区在线观看一| 午夜精品一区二区三区电影天堂 | 国产精品热久久久久夜色精品三区| 欧美mv日韩mv国产| 久久婷婷综合激情| 中文字幕精品一区二区精品绿巨人| 中文字幕av一区二区三区高| 国产精品区一区二区三| 国产精品久久二区二区| 中文字幕视频一区| 亚洲尤物在线视频观看| 亚洲123区在线观看| 蜜臀国产一区二区三区在线播放| 免费在线观看精品| 国产综合色产在线精品| 成人av片在线观看| 色婷婷av一区二区三区大白胸| 在线观看成人免费视频| 欧美一区国产二区| 国产欧美一区二区三区沐欲| 国产精品久久久一本精品| 亚洲综合在线观看视频| 亚洲一二三区视频在线观看| 日韩av网站在线观看| 国产一区激情在线| av激情综合网| 欧美精三区欧美精三区| 国产亚洲精品久| 亚洲资源中文字幕| 国产综合久久久久久鬼色| 色综合天天综合给合国产| 欧美群妇大交群中文字幕| 欧美精品一区二区蜜臀亚洲| 亚洲视频一区二区免费在线观看| 亚洲18女电影在线观看| 国产福利不卡视频| 欧美日韩高清在线播放| 国产情人综合久久777777| 亚洲黄色av一区| 狠狠色狠狠色综合日日91app| 99久久夜色精品国产网站| 欧美一区二区福利在线| 国产精品久久夜| 老司机精品视频在线| 91视频你懂的| 久久综合九色综合欧美就去吻| 亚洲男人都懂的| 国产综合久久久久影院| 欧美少妇xxx| 国产精品午夜久久| 日本免费新一区视频| 99精品欧美一区| 精品成人a区在线观看| 一区二区三区中文字幕| 成人黄色大片在线观看| 日韩欧美成人一区| 亚洲影视在线播放| 成人免费高清在线观看| 欧美电视剧免费观看| 一区二区成人在线| 不卡视频一二三四| 久久综合狠狠综合久久综合88 | 一区二区三区四区av| 成人动漫一区二区在线| 26uuu精品一区二区在线观看| 亚洲成a人v欧美综合天堂| 不卡在线视频中文字幕| 国产日韩欧美一区二区三区综合| 美女视频黄 久久| 欧美群妇大交群中文字幕| 亚洲线精品一区二区三区八戒| 91婷婷韩国欧美一区二区| 欧美激情在线一区二区| 国产馆精品极品| 精品国产91乱码一区二区三区| 婷婷一区二区三区| 8v天堂国产在线一区二区| 亚洲国产欧美在线| 欧美午夜视频网站| 亚洲精品久久久久久国产精华液| 岛国精品在线播放| 国产欧美一区二区精品仙草咪 | 国产精品短视频| 91在线你懂得| 亚洲最大成人综合| 日本精品一区二区三区四区的功能| 国产福利一区二区三区|