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

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

?? idea.java

?? jpeg2000編解碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
        invertKey();    }    /**     * <b>SPI</b>: This is the main engine method for updating data.     * <p>     * <i>in</i> and <i>out</i> may be the same array, and the input and output     * regions may overlap.     *     * @param  in           the input data.     * @param  inOffset     the offset into in specifying where the data starts.     * @param  inLen        the length of the subarray.     * @param  out          the output array.     * @param  outOffset    the offset indicating where to start writing into     *                      the out array.     * @return the number of bytes written.     * @exception CryptixException if the native library is being used, and it     *                      reports an error.     */    protected int    engineUpdate(byte[] in, int inOffset, int inLen, byte[] out, int outOffset) {        if (inLen < 0) throw new IllegalArgumentException("inLen < 0");        int blockCount = inLen / BLOCK_SIZE;        inLen = blockCount * BLOCK_SIZE;        boolean doEncrypt = (getState() == ENCRYPT);        // Avoid overlapping input and output regions.        if (in == out && (outOffset >= inOffset && outOffset < (long)inOffset+inLen ||                          inOffset >= outOffset && inOffset < (long)outOffset+inLen)) {            byte[] newin = new byte[inLen];            System.arraycopy(in, inOffset, newin, 0, inLen);            in = newin;            inOffset = 0;        }        if (native_lock != null) {            synchronized(native_lock) {                // If in == null || out == 0, evaluating their lengths will throw a                // NullPointerException.                if (inOffset < 0 || (long)inOffset + inLen > in.length ||                    outOffset < 0 || (long)outOffset + inLen > out.length)                    throw new ArrayIndexOutOfBoundsException(getAlgorithm() +                        ": Arguments to native_crypt would cause a buffer overflow");                // In future, we may pass more than one block to native_crypt to reduce                // native method overhead.                for (int i = 0; i < blockCount; i++) {                    if (0 == native_crypt(native_cookie, in, inOffset, out, outOffset,                                          doEncrypt))                        throw new CryptixException(getAlgorithm() + ": Error in native code");                    inOffset += BLOCK_SIZE;                    outOffset += BLOCK_SIZE;                }            }        } else if (doEncrypt) { // state == ENCRYPT            for (int i = 0; i < blockCount; i++) {                blockEncrypt(in, inOffset, out, outOffset);                inOffset += BLOCK_SIZE;                outOffset += BLOCK_SIZE;            }        } else {                // state == DECRYPT            for (int i = 0; i < blockCount; i++) {                blockDecrypt(in, inOffset, out, outOffset);                inOffset += BLOCK_SIZE;                outOffset += BLOCK_SIZE;            }        }        return inLen;    }// Own methods//............................................................................    /**     * Expands a user-key to a working key schedule.     * <p>     * IDEA has separate key schedules for encryption and decryption. This     * generates the encryption schedule; calling <code>invertKey</code>     * afterward will generate the decryption schedule.     *     * @param  key  the user-key object to use.     * @exception InvalidKeyException if one of the following occurs: <ul>     *                <li> key.getEncoded() == null;     *                <li> The length of the user key array is outside the     *                     permissible limits.     *              </ul>     * @exception CryptixException if a self-test fails.     */    private void makeKey(Key key)    throws InvalidKeyException, CryptixException {        byte[] userkey = key.getEncoded();        if (userkey == null)            throw new InvalidKeyException(getAlgorithm() + ": Null user key");        if (userkey.length != KEY_LENGTH)            throw new InvalidKeyException(getAlgorithm() + ": Invalid user key length");        // If native library available then use it. If not or if        // native method returned error then revert to 100% Java.        if (native_lock != null) {            synchronized(native_lock) {                try {                    linkStatus.check(native_ks(native_cookie, userkey));                    return;                } catch (Error error) {                    native_finalize();                    native_lock = null;if (DEBUG && debuglevel > 0) debug(error + ". Will use 100% Java.");                }            }        }        /*         * Expand user key of 128 bits to full 832 bits of encryption key.         */        ks[0] = (short)((userkey[ 0] & 0xFF) << 8 | (userkey[ 1] & 0xFF));        ks[1] = (short)((userkey[ 2] & 0xFF) << 8 | (userkey[ 3] & 0xFF));        ks[2] = (short)((userkey[ 4] & 0xFF) << 8 | (userkey[ 5] & 0xFF));        ks[3] = (short)((userkey[ 6] & 0xFF) << 8 | (userkey[ 7] & 0xFF));        ks[4] = (short)((userkey[ 8] & 0xFF) << 8 | (userkey[ 9] & 0xFF));        ks[5] = (short)((userkey[10] & 0xFF) << 8 | (userkey[11] & 0xFF));        ks[6] = (short)((userkey[12] & 0xFF) << 8 | (userkey[13] & 0xFF));        ks[7] = (short)((userkey[14] & 0xFF) << 8 | (userkey[15] & 0xFF));        for (int i = 0, zoff = 0, j = 8; j < INTERNAL_KEY_LENGTH; i &= 7, j++) {            i++;            ks[i + 7 + zoff] = (short)((ks[(i & 7) + zoff] << 9) |                ((ks[((i + 1) & 7) + zoff] >>> 7) & 0x1FF));            zoff += i & 8;        }    }    /**     * IDEA, being a symmetric cipher, uses the same algorithm for both     * encryption and decryption. What changes is the key. For the inverse     * operation (of either encryption or decryption) the following method     * inverts the key to make it ready for application of the cipher method.     */    private void invertKey () {        if (native_lock == null) {            int i, j = 4, k = INTERNAL_KEY_LENGTH - 1;            short[] temp = new short[INTERNAL_KEY_LENGTH];            temp[k--] = inv(ks[3]);            temp[k--] = (short) -ks[2];            temp[k--] = (short) -ks[1];            temp[k--] = inv(ks[0]);            for (i = 1; i < ROUNDS; i++, j += 6) {                temp[k--] = ks[j + 1];                temp[k--] = ks[j];                temp[k--] = inv(ks[j + 5]);                temp[k--] = (short) -ks[j + 3];                temp[k--] = (short) -ks[j + 4];                temp[k--] = inv(ks[j + 2]);            }            temp[k--] = ks[j + 1];            temp[k--] = ks[j];            temp[k--] = inv(ks[j + 5]);            temp[k--] = (short) -ks[j + 4];            temp[k--] = (short) -ks[j + 3];            temp[k--] = inv(ks[j + 2]);            System.arraycopy(temp, 0, ks, 0, INTERNAL_KEY_LENGTH);        }    }    /**     * IDEA encryption/decryption algorithm using the current key schedule.     *     * @param  in       an array containing the plaintext block     * @param  inOffset the starting offset of the plaintext block     * @param  out      an array containing the ciphertext block     * @param  inOffset the starting offset of the ciphertext block     */    private void blockEncrypt (byte[] in, int inOffset, byte[] out, int outOffset) {        short            x1 = (short)(((in[inOffset++] & 0xFF) << 8) | (in[inOffset++] & 0xFF)),            x2 = (short)(((in[inOffset++] & 0xFF) << 8) | (in[inOffset++] & 0xFF)),            x3 = (short)(((in[inOffset++] & 0xFF) << 8) | (in[inOffset++] & 0xFF)),            x4 = (short)(((in[inOffset++] & 0xFF) << 8) | (in[inOffset  ] & 0xFF)),            s2, s3;        int i = 0,            round = ROUNDS;        while (round-- > 0) {            x1 = mul(x1, ks[i++]);            x2 += ks[i++];            x3 += ks[i++];            x4 = mul(x4, ks[i++]);            s3 = x3;            x3 = mul(x1 ^ x3, ks[i++]);            s2 = x2;            x2 = mul(x3 + (x2 ^ x4), ks[i++]);            x3 += x2;            x1 ^= x2;            x4 ^= x3;            x2 ^= s3;            x3 ^= s2;        }        s2 = mul(x1, ks[i++]);        out[outOffset++] = (byte)(s2 >>> 8);        out[outOffset++] = (byte) s2;        s2 = (short)(x3 + ks[i++]);        out[outOffset++] = (byte)(s2 >>> 8);        out[outOffset++] = (byte) s2;        s2 = (short)(x2 + ks[i++]);        out[outOffset++] = (byte)(s2 >>> 8);        out[outOffset++] = (byte) s2;        s2 = mul(x4, ks[i]);        out[outOffset++] = (byte)(s2 >>> 8);        out[outOffset  ] = (byte) s2;    }    /**     * IDEA uses the same algorithm for both encryption and decryption. Only the     * key schedule changes.     */    private void blockDecrypt (byte[] in, int inOffset, byte[] out, int outOffset) {        blockEncrypt(in, inOffset, out, outOffset);    }    /**     * Multiplication modulo (2**16)+1.     */    private static short mul (int a, int b) {        a &= 0xFFFF;        b &= 0xFFFF;        int p;        if (a != 0) {            if (b != 0) {                p = a * b;                b = p & 0xFFFF;                a = p >>> 16;                return (short)(b - a + (b < a ? 1 : 0));            } else                return (short)(1 - a);        } else            return (short)(1 - b);    }    /**     * Compute inverse of x, modulo (2**16)+1, using Euclidean gcd algorithm.     *     * The Euclidean part of this algorithm could live in a     * general purpose math library, but then it would probably     * end up too slow.     */    private static short inv (short xx) {        int x = xx & 0xFFFF;       // only lower 16 bits        if (x <= 1)            return (short)x;        // 0 and 1 are self-inverse        int t1 = 0x10001 / x;        // Since x >= 2, this fits into 16 bits        int y = 0x10001 % x;        if (y == 1)            return (short)(1 - t1);        int t0 = 1;        int q;        do {            q = x / y;            x = x % y;            t0 += q * t1;            if (x == 1)                return (short)t0;            q = y / x;            y %= x;            t1 += q * t0;        } while (y != 1);        return (short)(1 - t1);    }// Test methods//................................................................................//// Don't expand this code please without thinking about it,// much better to write a separate program.    /**     * Entry point for very basic <code>self_test</code>.     */    public static void    main(String argv[])     {        try { self_test(); }        catch(Throwable t) { t.printStackTrace(); }    }    //    // This is (apparently) the official certification data.    // Use ints as Java grumbles about negative hex values.    //    static final private byte[][][] tests =    {      { // cert 1        { 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8},  // key        { 0, 0, 0, 1, 0, 2, 0, 3},                          // plain        { 17, -5, -19, 43, 1, -104, 109, -27},              // cipher      },      { // cert 8        { 58, -104, 78, 32, 0, 25, 93, -77, 46, -27, 1, -56, -60, 124, -22, 96},        { 1, 2, 3, 4, 5, 6, 7, 8},        { -105, -68, -40, 32, 7, -128, -38, -122},      },      { // cert 9        { 0, 100, 0, -56, 1, 44, 1, -112, 1, -12, 2, 88, 2, -68, 3, 32},  // key        { 5, 50, 10, 100, 20, -56, 25, -6},                               // plain        { 101, -66, -121, -25, -94, 83, -118, -19},                       // cipher      },    };    /**     * Do some basic tests.     * Three of the certification data are included only, no output,     * success or exception.     * If you want more, write a test program!     * @see cryptix.examples.IDEA     */    public static void self_test()    throws Throwable {        Cipher cryptor = Cipher.getInstance("IDEA", "Cryptix");        RawSecretKey userKey;        byte[] tmp;        for (int i = 0; i < tests.length; i++) {            userKey = new RawSecretKey("IDEA", tests[i][0]);            cryptor.initEncrypt(userKey);            tmp = cryptor.crypt(tests[i][1]);            if (!ArrayUtil.areEqual(tests[i][2], tmp))                throw new CryptixException("encrypt #"+ i +" failed");            cryptor.initDecrypt(userKey);            tmp = cryptor.crypt(tests[i][2]);            if (!ArrayUtil.areEqual(tests[i][1], tmp))                throw new CryptixException("decrypt #"+ i +" failed");        }if (DEBUG && debuglevel > 0) debug("Self-test OK");    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一二三区视频| 久久久一区二区三区| 精品日韩在线观看| 综合激情网...| 国产一区激情在线| 337p亚洲精品色噜噜噜| 中文字幕一区二区不卡| 国产精品2024| 7777精品久久久大香线蕉| 亚洲天堂免费看| 丁香激情综合五月| 久久综合国产精品| 青青青爽久久午夜综合久久午夜| 91免费精品国自产拍在线不卡| 久久精品人人做人人爽97| 奇米888四色在线精品| 在线中文字幕不卡| 最新国产成人在线观看| 国产69精品一区二区亚洲孕妇| 日韩一卡二卡三卡四卡| 亚洲国产成人91porn| 色婷婷激情久久| 综合久久久久久| 91网站在线播放| 中文字幕乱码一区二区免费| 国产麻豆91精品| 亚洲精品一区二区在线观看| 久久精品国产一区二区| 日韩欧美中文一区| 久久99热国产| 精品国产乱码久久久久久久久| 久久精品国产精品亚洲综合| 精品国产麻豆免费人成网站| 久色婷婷小香蕉久久| 欧美成人aa大片| 韩国精品在线观看| 欧美大白屁股肥臀xxxxxx| 久久99精品久久久久久久久久久久| 欧美日韩国产一区二区三区地区| 亚洲成人先锋电影| 欧美一区二区三区免费视频| 加勒比av一区二区| 国产欧美精品一区二区三区四区| 丁香激情综合国产| 亚洲主播在线播放| 欧美日本在线视频| 久久精品国产77777蜜臀| 26uuu欧美| www.欧美精品一二区| 亚洲精品中文在线| 91精品久久久久久久91蜜桃| 九九九精品视频| 欧美国产国产综合| 在线免费观看视频一区| 三级欧美在线一区| 国产亚洲一区二区三区在线观看| www.在线欧美| 日本在线观看不卡视频| 久久精品亚洲国产奇米99| 99re66热这里只有精品3直播| 亚洲影院在线观看| 精品999在线播放| av午夜一区麻豆| 日韩激情一区二区| 久久久美女毛片| 色视频一区二区| 极品少妇xxxx精品少妇偷拍| 国产精品久久久久9999吃药| 制服丝袜中文字幕一区| 懂色av一区二区三区蜜臀| 亚洲国产婷婷综合在线精品| 精品伦理精品一区| 色呦呦国产精品| 国产最新精品免费| 五月天激情小说综合| 国产视频一区在线观看| 欧美日韩美少妇| 成人一级视频在线观看| 日本一区中文字幕| 亚洲免费观看在线视频| 久久精品一区二区三区av| 欧美久久一二区| av在线这里只有精品| 麻豆视频一区二区| 亚洲第一在线综合网站| 中文字幕精品在线不卡| 精品少妇一区二区三区免费观看| 一本一道波多野结衣一区二区| 国产一区二区久久| 免费欧美高清视频| 亚洲国产欧美日韩另类综合 | 欧美体内she精高潮| 国产成人一级电影| 久久精品国产成人一区二区三区| 亚洲成人自拍网| 亚洲欧美日韩人成在线播放| 国产欧美一区二区三区网站| 欧美电影精品一区二区| 91精品在线一区二区| 色94色欧美sute亚洲线路一ni| 国产91精品免费| 国产精品1区2区| 久久国产人妖系列| 卡一卡二国产精品| 久久精品国产99国产| 蜜桃精品在线观看| 肉色丝袜一区二区| 日韩精品国产精品| 同产精品九九九| 亚洲成av人**亚洲成av**| 亚洲夂夂婷婷色拍ww47| 一级特黄大欧美久久久| 亚洲免费av在线| 一区二区三区四区五区视频在线观看| 国产精品天天看| 日韩一区在线看| 亚洲同性同志一二三专区| 国产精品久久久久久亚洲伦 | 久久影音资源网| 久久久99精品免费观看不卡| 久久久一区二区三区捆绑**| 久久久久久久免费视频了| 欧美xxxx老人做受| 国产亚洲一区二区三区在线观看| 久久精品一区二区| 中文字幕一区二区三区精华液| ...xxx性欧美| 一区二区不卡在线视频 午夜欧美不卡在| 日韩理论在线观看| 一个色综合网站| 日韩中文欧美在线| 久久99国产精品尤物| 国产成人午夜精品5599 | 制服丝袜激情欧洲亚洲| 日韩一区二区三区四区| 精品少妇一区二区三区日产乱码| 久久久电影一区二区三区| 国产精品久久久久久久第一福利| 自拍视频在线观看一区二区| 亚洲一区二区影院| 六月丁香婷婷久久| 成人看片黄a免费看在线| 一本大道av一区二区在线播放 | 日韩av一区二区三区四区| 韩国午夜理伦三级不卡影院| 成人国产在线观看| 欧美日韩视频在线一区二区 | 国内精品久久久久影院色| 成人18视频日本| 欧美日韩大陆在线| 国产欧美精品一区| 午夜精品爽啪视频| 国产精品夜夜爽| 欧美亚洲综合久久| 国产欧美1区2区3区| 亚洲国产精品欧美一二99| 国产乱人伦精品一区二区在线观看 | 色婷婷亚洲精品| 欧美大片在线观看一区二区| 国产精品国产三级国产专播品爱网| 一区二区三区自拍| 国产一区二区成人久久免费影院 | 亚洲6080在线| 国产成人在线观看| 制服丝袜中文字幕亚洲| 最新国产成人在线观看| 激情av综合网| 欧美日本一区二区三区| 国产精品久久久久国产精品日日| 美女视频一区二区| 欧美性猛交xxxxxx富婆| 国产精品理论片在线观看| 韩国成人在线视频| 日韩一级片在线观看| 一区二区三区小说| 播五月开心婷婷综合| 久久久久国产精品人| 日本少妇一区二区| 欧美午夜在线观看| 亚洲欧美国产77777| 国产1区2区3区精品美女| 日韩欧美国产不卡| 肉肉av福利一精品导航| 在线免费av一区| 亚洲视频1区2区| 99天天综合性| 久久精品亚洲精品国产欧美| 国内精品国产成人国产三级粉色 | 欧美日韩免费在线视频| 亚洲精品一二三区| 一本一本久久a久久精品综合麻豆| 国产女主播一区| 国产一区二区三区免费看| 欧美xxxxx牲另类人与| 偷拍自拍另类欧美| 91麻豆精品国产91久久久久久| 亚洲精品久久久蜜桃| 色吧成人激情小说| 亚洲资源中文字幕| 在线观看91精品国产麻豆|