util.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 166 行

JAVA
166
字号
/* *    * * Copyright  1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER *  * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. *  * 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 version 2 for more details (a copy is * included at /legal/license.txt). *  * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA *  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */package com.sun.midp.crypto;/** * This class defines some static utility methods. */public class Util {    // These are here only to support toString() methods in SecretKey    // and RSAKey    /** Hexadecimal character digits (0-f). */    private static char[] hc = {	'0', '1', '2', '3', '4', '5', '6', '7', 	'8', '9', 'a', 'b', 'c', 'd', 'e', 'f'    };        /**     * Converts a byte array into a corresponding string of hexadecimal     * digits. This is equivalent to hexEncode(b, 0, b.length).     *      * @param b byte array to be converted     * @return corresponding hexadecimal string     */     static String hexEncode(byte[] b) {	if (b == null)	    return ("");	else {	    char[] r = new char[b.length << 1];	    int v;	    for (int i = 0, j = 0; i < b.length; i++) {		v = b[i] & 0xff;		r[j++] = hc[v >>> 4];		r[j++] = hc[v & 0x0f];	    }	    return (new String(r));	}    }    /**     * Creates a copy of byte array.     * @param array the byte array to be copied     * @param offset where to begin     * @param len how many bytes to copy     * @return the copy of the array     */    public static byte[] cloneSubarray(byte[] array, int offset, int len) {        byte[] data = new byte[len];        System.arraycopy(array, 0, data, offset, len);        return data;    }    /**     * Creates a copy of byte array.     * @param array the byte array to be copied     * @return the copy of the array     */    public static byte[] cloneArray(byte[] array) {        byte[] data = new byte[array.length];        System.arraycopy(array, 0, data, 0, array.length);        return data;    }    /**     * Performs an XOR operation of arrays elements. Results are placed     * into the first array.     * @param a the first array     * @param b the second array     */    public static void xorArrays(byte[] a, byte[] b) {        for (int i = 0; i < a.length; i++) {            a[i] ^= b[i];        }    }    /**     * Unpacks data from string representation.     * @param src packed data     * @return unpacked data     */    public static byte[] unpackBytes(String src) {        byte[] data = src.getBytes();        int srcLen, len;        byte[] res = new byte[len =                  ((srcLen = data.length) >> 3) * 7 + (srcLen & 7) - 1];        int i = 0;        for (int k = len; k < srcLen; k++) {            int mask = data[k];            for (int j = 0; j < 7 && i < len; j++, i++) {                res[i] = ((mask & (1 << j)) == 0) ? data[i] :                              (byte) (data[i] | 0x80);            }        }        return res;    }    /**     * Returns 4 bytes from the buffer as integer value.     * @param data data array     * @param offset value offset     * @return the value     */    public static int getInt(byte[] data, int offset) {        int res = 0;        for (int i = 0; i < 4; i++) {            res = (res << 8) | (data[offset + i] & 0xff);        }        return res;    }    /**     * Verifies that method parameters are correct.     * NOTE: This method accepts too big outputOffset values - cipher     * methods must throw ShortBufferException if there are output data.     * @param input the input buffer     * @param inputOffset the offset in <code>input</code> where the input     * starts     * @param inputLen the input length     * @param output the buffer for the result     * @param outputOffset the offset in <code>output</code> where the result     * is stored     * @throws IllegalArgumentException if parameters are wrong.     */    public static void checkBounds(byte[] input, int inputOffset, int inputLen,                             byte[] output, int outputOffset) {        if (inputLen != 0 && (input == null || inputOffset < 0 ||                inputLen < 0 || inputOffset + inputLen > input.length)) {            throw new IllegalArgumentException("input out of bounds");        }        if (output == null || outputOffset < 0) {            throw new IllegalArgumentException("output out of bounds");        }    }}

⌨️ 快捷键说明

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