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

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

?? md4.java

?? mina是以Java實現的一個開源的網絡程序框架
?? JAVA
字號:
package org.apache.mina.proxy.utils;import java.security.DigestException;import java.security.MessageDigestSpi;/** * MD4.java - An implementation of Ron Rivest's MD4 message digest algorithm. * The MD4 algorithm is designed to be quite fast on 32-bit machines. In * addition, the MD4 algorithm does not require any large substitution * tables. * * @see The <a href="http://www.ietf.org/rfc/rfc1320.txt">MD4</a> Message- *    Digest Algorithm by R. Rivest. * * @author The Apache MINA Project (dev@mina.apache.org) * @version $Rev: 687202 $, $Date: 2008-08-20 02:07:55 +0200 (Wed, 20 Aug 2008) $ * @since MINA 2.0.0-M3 */public class MD4 extends MessageDigestSpi {    /**     * The MD4 algorithm message digest length is 16 bytes wide.     */    public static final int BYTE_DIGEST_LENGTH = 16;    /**     * The MD4 algorithm block length is 64 bytes wide.     */    public static final int BYTE_BLOCK_LENGTH = 64;    /**     * The initial values of the four registers. RFC gives the values      * in LE so we converted it as JAVA uses BE endianness.     */    private final static int A = 0x67452301;    private final static int B = 0xefcdab89;    private final static int C = 0x98badcfe;    private final static int D = 0x10325476;    /**     * The four registers initialized with the above IVs.     */    private int a = A;    private int b = B;    private int c = C;    private int d = D;    /**     * Counts the total length of the data being digested.     */    private long msgLength;    /**     * The internal buffer is {@link BLOCK_LENGTH} wide.     */    private final byte[] buffer = new byte[BYTE_BLOCK_LENGTH];    /**     * Default constructor.     */    public MD4() {    }    /**     * Returns the digest length in bytes.     *     * @return the digest length in bytes.     */    protected int engineGetDigestLength() {        return BYTE_DIGEST_LENGTH;    }    /**     * {@inheritDoc}     */    protected void engineUpdate(byte b) {        int pos = (int) (msgLength % BYTE_BLOCK_LENGTH);        buffer[pos] = b;        msgLength++;        // If buffer contains enough data then process it.        if (pos == (BYTE_BLOCK_LENGTH - 1)) {            process(buffer, 0);        }    }    /**     * {@inheritDoc}     */    protected void engineUpdate(byte[] b, int offset, int len) {        int pos = (int) (msgLength % BYTE_BLOCK_LENGTH);        int nbOfCharsToFillBuf = BYTE_BLOCK_LENGTH - pos;        int blkStart = 0;        msgLength += len;        // Process each full block        if (len >= nbOfCharsToFillBuf) {            System.arraycopy(b, offset, buffer, pos, nbOfCharsToFillBuf);            process(buffer, 0);            for (blkStart = nbOfCharsToFillBuf; blkStart + BYTE_BLOCK_LENGTH                    - 1 < len; blkStart += BYTE_BLOCK_LENGTH) {                process(b, offset + blkStart);            }            pos = 0;        }        // Fill buffer with the remaining data        if (blkStart < len) {            System.arraycopy(b, offset + blkStart, buffer, pos, len - blkStart);        }    }    /**     * {@inheritDoc}     */    protected byte[] engineDigest() {        byte[] p = pad();        engineUpdate(p, 0, p.length);        byte[] digest = { (byte) a, (byte) (a >>> 8), (byte) (a >>> 16),                (byte) (a >>> 24), (byte) b, (byte) (b >>> 8),                (byte) (b >>> 16), (byte) (b >>> 24), (byte) c,                (byte) (c >>> 8), (byte) (c >>> 16), (byte) (c >>> 24),                (byte) d, (byte) (d >>> 8), (byte) (d >>> 16),                (byte) (d >>> 24) };        engineReset();        return digest;    }    /**     * {@inheritDoc}     */    protected int engineDigest(byte[] buf, int offset, int len)            throws DigestException {        if (offset < 0 || offset + len >= buf.length) {            throw new DigestException(                    "Wrong offset or not enough space to store the digest");        }        int destLength = Math.min(len, BYTE_DIGEST_LENGTH);        System.arraycopy(engineDigest(), 0, buf, offset, destLength);        return destLength;    }    /**     * {@inheritDoc}     */    protected void engineReset() {        a = A;        b = B;        c = C;        d = D;        msgLength = 0;    }    /**     * Pads the buffer by appending the byte 0x80, then append as many zero      * bytes as necessary to make the buffer length a multiple of 64 bytes.       * The last 8 bytes will be filled with the length of the buffer in bits.     * If there's no room to store the length in bits in the block i.e the block      * is larger than 56 bytes then an additionnal 64-bytes block is appended.     *      * @see sections 3.1 & 3.2 of the RFC 1320.     *      * @return the pad byte array     */    private byte[] pad() {        int pos = (int) (msgLength % BYTE_BLOCK_LENGTH);        int padLength = (pos < 56) ? (64 - pos) : (128 - pos);        byte[] pad = new byte[padLength];        // First bit of the padding set to 1        pad[0] = (byte) 0x80;        long bits = msgLength << 3;        int index = padLength - 8;        for (int i = 0; i < 8; i++) {            pad[index++] = (byte) (bits >>> (i << 3));        }        return pad;    }    /**      * Process one 64-byte block. Algorithm is constituted by three rounds.     * Note that F, G and H functions were inlined for improved performance.     *      * @param in the byte array to process     * @param offset the offset at which the 64-byte block is stored     */    private void process(byte[] in, int offset) {        // Save previous state.        int aa = a;        int bb = b;        int cc = c;        int dd = d;        // Copy the block to process into X array        int[] X = new int[16];        for (int i = 0; i < 16; i++) {            X[i] = (in[offset++] & 0xff) | (in[offset++] & 0xff) << 8                    | (in[offset++] & 0xff) << 16 | (in[offset++] & 0xff) << 24;        }        // Round 1        a += ((b & c) | (~b & d)) + X[0];        a = a << 3 | a >>> (32 - 3);        d += ((a & b) | (~a & c)) + X[1];        d = d << 7 | d >>> (32 - 7);        c += ((d & a) | (~d & b)) + X[2];        c = c << 11 | c >>> (32 - 11);        b += ((c & d) | (~c & a)) + X[3];        b = b << 19 | b >>> (32 - 19);        a += ((b & c) | (~b & d)) + X[4];        a = a << 3 | a >>> (32 - 3);        d += ((a & b) | (~a & c)) + X[5];        d = d << 7 | d >>> (32 - 7);        c += ((d & a) | (~d & b)) + X[6];        c = c << 11 | c >>> (32 - 11);        b += ((c & d) | (~c & a)) + X[7];        b = b << 19 | b >>> (32 - 19);        a += ((b & c) | (~b & d)) + X[8];        a = a << 3 | a >>> (32 - 3);        d += ((a & b) | (~a & c)) + X[9];        d = d << 7 | d >>> (32 - 7);        c += ((d & a) | (~d & b)) + X[10];        c = c << 11 | c >>> (32 - 11);        b += ((c & d) | (~c & a)) + X[11];        b = b << 19 | b >>> (32 - 19);        a += ((b & c) | (~b & d)) + X[12];        a = a << 3 | a >>> (32 - 3);        d += ((a & b) | (~a & c)) + X[13];        d = d << 7 | d >>> (32 - 7);        c += ((d & a) | (~d & b)) + X[14];        c = c << 11 | c >>> (32 - 11);        b += ((c & d) | (~c & a)) + X[15];        b = b << 19 | b >>> (32 - 19);        // Round 2        a += ((b & (c | d)) | (c & d)) + X[0] + 0x5a827999;        a = a << 3 | a >>> (32 - 3);        d += ((a & (b | c)) | (b & c)) + X[4] + 0x5a827999;        d = d << 5 | d >>> (32 - 5);        c += ((d & (a | b)) | (a & b)) + X[8] + 0x5a827999;        c = c << 9 | c >>> (32 - 9);        b += ((c & (d | a)) | (d & a)) + X[12] + 0x5a827999;        b = b << 13 | b >>> (32 - 13);        a += ((b & (c | d)) | (c & d)) + X[1] + 0x5a827999;        a = a << 3 | a >>> (32 - 3);        d += ((a & (b | c)) | (b & c)) + X[5] + 0x5a827999;        d = d << 5 | d >>> (32 - 5);        c += ((d & (a | b)) | (a & b)) + X[9] + 0x5a827999;        c = c << 9 | c >>> (32 - 9);        b += ((c & (d | a)) | (d & a)) + X[13] + 0x5a827999;        b = b << 13 | b >>> (32 - 13);        a += ((b & (c | d)) | (c & d)) + X[2] + 0x5a827999;        a = a << 3 | a >>> (32 - 3);        d += ((a & (b | c)) | (b & c)) + X[6] + 0x5a827999;        d = d << 5 | d >>> (32 - 5);        c += ((d & (a | b)) | (a & b)) + X[10] + 0x5a827999;        c = c << 9 | c >>> (32 - 9);        b += ((c & (d | a)) | (d & a)) + X[14] + 0x5a827999;        b = b << 13 | b >>> (32 - 13);        a += ((b & (c | d)) | (c & d)) + X[3] + 0x5a827999;        a = a << 3 | a >>> (32 - 3);        d += ((a & (b | c)) | (b & c)) + X[7] + 0x5a827999;        d = d << 5 | d >>> (32 - 5);        c += ((d & (a | b)) | (a & b)) + X[11] + 0x5a827999;        c = c << 9 | c >>> (32 - 9);        b += ((c & (d | a)) | (d & a)) + X[15] + 0x5a827999;        b = b << 13 | b >>> (32 - 13);        // Round 3        a += (b ^ c ^ d) + X[0] + 0x6ed9eba1;        a = a << 3 | a >>> (32 - 3);        d += (a ^ b ^ c) + X[8] + 0x6ed9eba1;        d = d << 9 | d >>> (32 - 9);        c += (d ^ a ^ b) + X[4] + 0x6ed9eba1;        c = c << 11 | c >>> (32 - 11);        b += (c ^ d ^ a) + X[12] + 0x6ed9eba1;        b = b << 15 | b >>> (32 - 15);        a += (b ^ c ^ d) + X[2] + 0x6ed9eba1;        a = a << 3 | a >>> (32 - 3);        d += (a ^ b ^ c) + X[10] + 0x6ed9eba1;        d = d << 9 | d >>> (32 - 9);        c += (d ^ a ^ b) + X[6] + 0x6ed9eba1;        c = c << 11 | c >>> (32 - 11);        b += (c ^ d ^ a) + X[14] + 0x6ed9eba1;        b = b << 15 | b >>> (32 - 15);        a += (b ^ c ^ d) + X[1] + 0x6ed9eba1;        a = a << 3 | a >>> (32 - 3);        d += (a ^ b ^ c) + X[9] + 0x6ed9eba1;        d = d << 9 | d >>> (32 - 9);        c += (d ^ a ^ b) + X[5] + 0x6ed9eba1;        c = c << 11 | c >>> (32 - 11);        b += (c ^ d ^ a) + X[13] + 0x6ed9eba1;        b = b << 15 | b >>> (32 - 15);        a += (b ^ c ^ d) + X[3] + 0x6ed9eba1;        a = a << 3 | a >>> (32 - 3);        d += (a ^ b ^ c) + X[11] + 0x6ed9eba1;        d = d << 9 | d >>> (32 - 9);        c += (d ^ a ^ b) + X[7] + 0x6ed9eba1;        c = c << 11 | c >>> (32 - 11);        b += (c ^ d ^ a) + X[15] + 0x6ed9eba1;        b = b << 15 | b >>> (32 - 15);        //Update state.        a += aa;        b += bb;        c += cc;        d += dd;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
无吗不卡中文字幕| 色综合 综合色| 日韩美女视频一区二区在线观看| 亚洲欧美综合色| 热久久免费视频| 91麻豆精品国产91久久久| 亚洲国产色一区| 中文在线一区二区 | 久久国产生活片100| 大桥未久av一区二区三区中文| 精品88久久久久88久久久| 精品写真视频在线观看| 精品美女在线播放| 久久99这里只有精品| 久久久一区二区三区| 国产乱子伦视频一区二区三区| 亚洲精品一区二区三区影院 | 91精品中文字幕一区二区三区| 樱桃视频在线观看一区| 91久久精品日日躁夜夜躁欧美| 亚洲免费在线电影| 欧美在线视频日韩| 亚洲天堂网中文字| 欧美综合一区二区三区| 婷婷夜色潮精品综合在线| 日韩限制级电影在线观看| 国产麻豆视频一区| 中文字幕一区二区在线观看| 在线精品视频免费播放| 天天综合日日夜夜精品| 精品美女一区二区| 丁香天五香天堂综合| 国产精品免费网站在线观看| 91久久精品国产91性色tv| 捆绑调教一区二区三区| 国产日韩一级二级三级| 色综合天天性综合| 国产成人日日夜夜| 国产欧美日韩不卡免费| 99久久免费精品高清特色大片| 亚洲影院理伦片| 精品免费99久久| 91社区在线播放| 老司机免费视频一区二区三区| 中文字幕在线不卡一区| 欧美精品自拍偷拍动漫精品| 美女尤物国产一区| 久久午夜免费电影| 色悠久久久久综合欧美99| 麻豆精品久久久| 亚洲天堂精品在线观看| 日韩精品专区在线影院观看| 色综合久久中文综合久久牛| 久久超碰97中文字幕| 亚洲天堂网中文字| 欧美一级搡bbbb搡bbbb| 日韩av电影天堂| 中文字幕在线观看不卡| 欧美va在线播放| 在线精品国精品国产尤物884a| 欧美videossexotv100| 高清国产一区二区| 男男成人高潮片免费网站| 亚洲女女做受ⅹxx高潮| 久久久精品国产免费观看同学| 欧美日韩国产片| 波多野洁衣一区| 蜜桃av一区二区三区| 亚洲永久免费av| 亚洲同性gay激情无套| 欧美哺乳videos| 欧美精品精品一区| 99视频精品免费视频| 国产剧情在线观看一区二区| 日韩avvvv在线播放| 亚洲福利一区二区三区| 亚洲伦理在线精品| 国产精品免费看片| 欧美一级二级在线观看| 91在线国产福利| 国产成人av影院| 韩国精品久久久| 国产在线精品一区二区夜色| 中文字幕一区二区在线观看| 久久精品一区八戒影视| 欧美精品一区二区三区高清aⅴ| 欧美欧美午夜aⅴ在线观看| 色悠悠久久综合| 日本韩国欧美在线| 91久久精品午夜一区二区| 国产成人在线网站| 精品亚洲成a人| 国产在线播精品第三| 国产在线视频一区二区三区| 精品在线免费观看| 国模一区二区三区白浆| 水蜜桃久久夜色精品一区的特点 | 国产a久久麻豆| 不卡的av网站| 99国内精品久久| 91免费国产在线观看| 一本大道综合伊人精品热热| 日本黄色一区二区| 在线观看91精品国产麻豆| 欧美精品成人一区二区三区四区| 欧美精品免费视频| 欧美刺激午夜性久久久久久久| 日韩免费性生活视频播放| 亚洲精品在线免费观看视频| 国产日产精品一区| 国产精品少妇自拍| 一区二区在线观看视频| 亚洲高清一区二区三区| 蜜桃视频一区二区三区在线观看| 免费日本视频一区| 国产成人亚洲综合色影视| 97精品久久久午夜一区二区三区| 91国产免费看| 欧美日韩国产片| 久久免费电影网| 亚洲另类春色校园小说| 欧美三级乱人伦电影| 欧美在线啊v一区| 日韩一区二区三区视频在线 | 欧美精品视频www在线观看| 久久综合五月天婷婷伊人| 欧美经典三级视频一区二区三区| 中文字幕五月欧美| 亚洲大型综合色站| 九九精品一区二区| 一本在线高清不卡dvd| 日韩美女一区二区三区| 国产精品不卡在线观看| 婷婷开心久久网| 日韩在线一区二区| 成人av网址在线| 欧美一区二区网站| 国产精品久久久久久久久晋中 | 91精品国产综合久久香蕉麻豆| 亚洲国产成人一区二区三区| 日产国产欧美视频一区精品| 色婷婷精品大视频在线蜜桃视频| 久久亚洲欧美国产精品乐播| 男人的j进女人的j一区| 欧美亚洲动漫制服丝袜| 国产精品国产a| 国产成人免费视频一区| 精品国产一区a| 麻豆久久一区二区| 欧美日韩激情一区| 亚洲线精品一区二区三区八戒| www.视频一区| 国产精品美女久久久久久久久| 国产一区三区三区| 日韩精品自拍偷拍| 青青国产91久久久久久| 精品视频免费在线| 亚洲va天堂va国产va久| 在线观看日韩毛片| 一区二区三区鲁丝不卡| 97精品视频在线观看自产线路二| 国产女人aaa级久久久级| 国产美女视频一区| 国产丝袜在线精品| 国产成人亚洲综合色影视| 国产午夜精品福利| 国产精品2024| 国产精品久久久爽爽爽麻豆色哟哟| 国产高清不卡一区| 中文字幕免费在线观看视频一区| 国产精品综合在线视频| 国产欧美日韩另类视频免费观看| 国产传媒欧美日韩成人| 中文字幕av一区二区三区高| 成人性生交大片免费看在线播放| 国产色产综合色产在线视频| 国产成人高清在线| 国产精品久久久久久久久搜平片| 丁香六月综合激情| 亚洲精品成人悠悠色影视| 欧美日韩国产片| 久久成人18免费观看| 国产三级精品视频| 色综合欧美在线视频区| 亚洲午夜激情网页| 欧美α欧美αv大片| 国产另类ts人妖一区二区| 国产精品久久毛片a| 色吊一区二区三区| 美国十次综合导航| 国产无人区一区二区三区| av福利精品导航| 久久先锋影音av鲁色资源| 亚洲小说欧美激情另类| 日韩一区二区三区三四区视频在线观看| 久久电影国产免费久久电影| 日本一区二区三级电影在线观看 | 亚洲一区二区精品视频| 欧美一区二区啪啪| 国产成人亚洲综合a∨猫咪|