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

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

?? security.java

?? 基于java的oa系統
?? 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 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,v 1.1.4.6 2004/08/09 22:15:12 mmatthew Exp $ */class Security {    private static final int SHA1_HASH_SIZE = 20;    private static final char PVERSION41_CHAR = '*';    /**     * Prevent construction.     */    private Security() {        super();    }    /*      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    */    /**     * 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;        } else {            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");            md.update(binaryPassword, 0, 8);            return md.digest();        }    }    /**     * 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);    }    /**     * 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");        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");        // hash 4 bytes of salt        md.update(salt, 0, 4);        md.update(hashedPassword, 0, SHA1_HASH_SIZE);        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;        } else {            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;        }    }    /**     * Returns hex value for given char     */    private static int charVal(char c) {        return (int) (((c >= '0') && (c <= '9')) ? (c - '0')                                                 : (((c >= 'A') && (c <= 'Z'))        ? (c - 'A' + 10) : (c - 'a' + 10)));    }    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");            }            buf.append(longHex);            return buf.toString();        } else {            return longHex.substring(0, 8);        }    }	//	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");				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;			}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区三区av性色| 欧美熟乱第一页| 日韩高清一级片| 亚洲国产成人porn| 亚洲永久精品国产| 亚洲福利一区二区三区| 天堂久久一区二区三区| 亚洲成人av一区二区三区| 亚洲国产欧美在线人成| 午夜成人在线视频| 日韩不卡手机在线v区| 老司机免费视频一区二区| 久久黄色级2电影| 国产麻豆视频精品| www.欧美日韩| 欧美在线免费观看视频| 69堂成人精品免费视频| 精品伦理精品一区| 国产欧美综合在线观看第十页| 中文字幕精品综合| 亚洲黄色免费电影| 麻豆精品在线播放| 成人黄色大片在线观看| 欧美日韩一级片网站| 欧美一区二区日韩| 国产视频一区二区在线观看| 亚洲欧美一区二区三区久本道91 | 久久久亚洲精华液精华液精华液| 精品国产自在久精品国产| 国产亚洲欧美一区在线观看| 亚洲精品国产视频| 韩国精品主播一区二区在线观看 | 欧美在线不卡一区| 精品电影一区二区三区| 自拍偷在线精品自拍偷无码专区 | gogo大胆日本视频一区| 欧美在线高清视频| 国产日韩欧美一区二区三区综合| 一区二区三区精品久久久| 久久99久久久久| 色天使久久综合网天天| 欧美大片免费久久精品三p| 国产精品福利影院| 久久99精品久久只有精品| 在线一区二区观看| 国产人妖乱国产精品人妖| 爽好久久久欧美精品| 成人美女在线视频| 91精品国产综合久久精品麻豆 | 欧美人牲a欧美精品| 国产欧美日韩另类视频免费观看| 偷拍自拍另类欧美| 99久久婷婷国产综合精品电影| 精品久久久久久无| 五月天激情综合网| 色婷婷精品大在线视频| 国产精品久久久久7777按摩| 国精品**一区二区三区在线蜜桃| 欧美日韩中文一区| 亚洲精品写真福利| 99国产精品国产精品毛片| 久久久噜噜噜久噜久久综合| 免费日韩伦理电影| 7777精品伊人久久久大香线蕉| 亚洲精品欧美综合四区| eeuss鲁片一区二区三区| 国产日韩欧美激情| 国产精品一区二区x88av| 欧美成人精品3d动漫h| 免费国产亚洲视频| 日韩一区二区在线免费观看| 成人综合婷婷国产精品久久蜜臀| 91精品国产综合久久国产大片| 亚洲福利一区二区三区| 欧美在线制服丝袜| 亚洲第一激情av| 欧美日韩综合色| 日韩精品高清不卡| 欧美丰满一区二区免费视频| 亚洲aaa精品| 91精品国产综合久久久蜜臀图片| 日日夜夜精品免费视频| 69堂亚洲精品首页| 极品少妇xxxx精品少妇| 久久免费美女视频| 成人午夜伦理影院| 亚洲精品国产视频| 在线播放日韩导航| 国产中文一区二区三区| 国产婷婷色一区二区三区在线| 成人毛片视频在线观看| 亚洲视频免费看| 欧美乱熟臀69xxxxxx| 日本不卡一二三| 久久久久国产精品人| 99视频热这里只有精品免费| 亚洲一级电影视频| 日韩精品一区二区三区四区 | 中文字幕一区二区三区蜜月| 欧美亚洲日本一区| 免费成人结看片| 国产精品福利av| 欧美日韩国产高清一区二区三区 | 国产无一区二区| 91麻豆自制传媒国产之光| 亚洲第一福利一区| 久久久91精品国产一区二区精品| 99久久综合色| 免费不卡在线视频| 国产精品久久久久一区二区三区| 欧美日韩国产电影| 成人性色生活片| 日本美女一区二区三区视频| 久久久噜噜噜久噜久久综合| 欧美性xxxxx极品少妇| 韩国欧美国产1区| 亚洲图片欧美色图| 国产精品无人区| 欧美一区二区播放| 在线观看不卡一区| 国产成人av电影在线| 手机精品视频在线观看| 国产精品青草综合久久久久99| 欧美日韩国产影片| 成人污视频在线观看| 蜜臀av一区二区| 亚洲自拍偷拍网站| 国产精品乱子久久久久| 精品国产免费人成在线观看| 欧美亚洲日本国产| 91社区在线播放| 丁香网亚洲国际| 久久99精品国产麻豆不卡| 亚洲精品一二三| 国产精品传媒入口麻豆| 久久久亚洲欧洲日产国码αv| 欧美日韩精品电影| 在线观看亚洲成人| 色婷婷综合久色| av中文字幕亚洲| 从欧美一区二区三区| 国产一区激情在线| 精品一二三四在线| 麻豆精品一二三| 麻豆精品在线播放| 日韩和欧美一区二区| 亚洲福利一二三区| 爽好久久久欧美精品| 亚洲成av人片一区二区三区| 亚洲一区二区高清| 亚洲不卡在线观看| 午夜精品久久久久影视| 午夜精品福利一区二区三区av | 亚洲美女免费在线| 亚洲三级电影网站| 亚洲精品水蜜桃| 亚洲一区二区视频| 日韩福利视频导航| 久久成人免费网| 国产一区不卡视频| 国产91在线观看丝袜| 99精品久久久久久| 色噜噜狠狠色综合欧洲selulu| 99精品久久99久久久久| 色狠狠综合天天综合综合| 色先锋久久av资源部| 欧美日韩亚洲高清一区二区| 欧美肥妇free| 久久噜噜亚洲综合| 1区2区3区国产精品| 一区二区免费看| 男女视频一区二区| 国产高清精品网站| 97精品电影院| 欧美一级片在线看| 国产亚洲1区2区3区| 亚洲毛片av在线| 日韩国产精品久久久久久亚洲| 狠狠久久亚洲欧美| 91麻豆精品视频| 日韩午夜小视频| 国产精品久久久久三级| 亚洲在线视频网站| 国产麻豆欧美日韩一区| 色av成人天堂桃色av| 欧美久久久久久蜜桃| 久久久国产午夜精品| 亚洲主播在线播放| 国产精品一区二区视频| 在线观看视频一区| 欧美精品一区二区三区很污很色的 | 久久精品国产亚洲aⅴ| 成人免费观看男女羞羞视频| 欧美精品自拍偷拍动漫精品| 欧美国产日韩精品免费观看| 午夜国产不卡在线观看视频| 成人激情文学综合网| 日韩欧美一区电影| 一区二区三区日韩| 国产精品91一区二区|