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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cast6engine.java

?? 內(nèi)容:基于jdk1.4的加密算法的具體實現(xiàn)
?? JAVA
字號:
package org.bouncycastle.crypto.engines;/** * A class that provides CAST6 key encryption operations, * such as encoding data and generating keys. * * All the algorithms herein are from the Internet RFC * * RFC2612 - CAST6 (128bit block, 128-256bit key) * * and implement a simplified cryptography interface. */public final class CAST6Engine extends CAST5Engine{    //====================================    // Useful constants    //====================================    protected static final int    ROUNDS = 12;    protected static final int    BLOCK_SIZE = 16;  // bytes = 128 bits    /*     * Put the round and mask keys into an array.     * Kr0[i] => _Kr[i*4 + 0]     */    protected int _Kr[] = new int[ROUNDS*4]; // the rotating round key(s)    protected int _Km[] = new int[ROUNDS*4]; // the masking round key(s)    /*     * Key setup     */    protected int _Tr[] = new int[24 * 8];    protected int _Tm[] = new int[24 * 8];    private int[] _workingKey = new int[8];    public CAST6Engine()    {    }    public String getAlgorithmName()    {        return "CAST6";    }    public void reset()    {    }    public int getBlockSize()    {        return BLOCK_SIZE;    }    //==================================    // Private Implementation    //==================================    /*     * Creates the subkeys using the same nomenclature     * as described in RFC2612.     *     * See section 2.4     */    protected void setKey(byte[] key)    {        int Cm = 0x5a827999;        int Mm = 0x6ed9eba1;        int Cr = 19;        int Mr = 17;        /*          * Determine the key size here, if required         *         * if keysize < 256 bytes, pad with 0         *         * Typical key sizes => 128, 160, 192, 224, 256         */        for (int i=0; i< 24; i++)        {            for (int j=0; j< 8; j++)            {                _Tm[i*8 + j] = Cm;                Cm = (Cm + Mm) & 0xffffffff;    // mod 2^32;                _Tr[i*8 + j] = Cr;                Cr = (Cr + Mr) & 0x1f;            // mod 32            }        }        byte[] tmpKey = new byte[64];        int length = key.length;        for (int i=0; i < length ; i++)        {            tmpKey[i] = key[i];        }        // now create ABCDEFGH        for (int i=0; i< 8; i++)        {            _workingKey[i] = BytesTo32bits(tmpKey, i*4);        }        // Generate the key schedule        int i2 = 0;        for (int i=0; i< 12; i++)        {            // KAPPA <- W2i(KAPPA)            i2 = i*2 *8;            _workingKey[6] ^= F1(_workingKey[7], _Tm[i2+0], _Tr[i2+0]);            _workingKey[5] ^= F2(_workingKey[6], _Tm[i2+1], _Tr[i2+1]);            _workingKey[4] ^= F3(_workingKey[5], _Tm[i2+2], _Tr[i2+2]);            _workingKey[3] ^= F1(_workingKey[4], _Tm[i2+3], _Tr[i2+3]);            _workingKey[2] ^= F2(_workingKey[3], _Tm[i2+4], _Tr[i2+4]);            _workingKey[1] ^= F3(_workingKey[2], _Tm[i2+5], _Tr[i2+5]);            _workingKey[0] ^= F1(_workingKey[1], _Tm[i2+6], _Tr[i2+6]);            _workingKey[7] ^= F2(_workingKey[0], _Tm[i2+7], _Tr[i2+7]);            // KAPPA <- W2i+1(KAPPA)            i2 = (i*2 + 1)*8;            _workingKey[6] ^= F1(_workingKey[7], _Tm[i2+0], _Tr[i2+0]);            _workingKey[5] ^= F2(_workingKey[6], _Tm[i2+1], _Tr[i2+1]);            _workingKey[4] ^= F3(_workingKey[5], _Tm[i2+2], _Tr[i2+2]);            _workingKey[3] ^= F1(_workingKey[4], _Tm[i2+3], _Tr[i2+3]);            _workingKey[2] ^= F2(_workingKey[3], _Tm[i2+4], _Tr[i2+4]);            _workingKey[1] ^= F3(_workingKey[2], _Tm[i2+5], _Tr[i2+5]);            _workingKey[0] ^= F1(_workingKey[1], _Tm[i2+6], _Tr[i2+6]);            _workingKey[7] ^= F2(_workingKey[0], _Tm[i2+7], _Tr[i2+7]);            // Kr_(i) <- KAPPA            _Kr[i*4 + 0] = _workingKey[0] & 0x1f;            _Kr[i*4 + 1] = _workingKey[2] & 0x1f;            _Kr[i*4 + 2] = _workingKey[4] & 0x1f;            _Kr[i*4 + 3] = _workingKey[6] & 0x1f;            // Km_(i) <- KAPPA            _Km[i*4 + 0] = _workingKey[7];            _Km[i*4 + 1] = _workingKey[5];            _Km[i*4 + 2] = _workingKey[3];            _Km[i*4 + 3] = _workingKey[1];        }            }    /**     * Encrypt the given input starting at the given offset and place     * the result in the provided buffer starting at the given offset.     *     * @param src        The plaintext buffer     * @param srcIndex    An offset into src     * @param dst        The ciphertext buffer     * @param dstIndex    An offset into dst     */    protected int encryptBlock(        byte[] src,         int srcIndex,        byte[] dst,        int dstIndex)    {        int  result[] = new int[4];        // process the input block         // batch the units up into 4x32 bit chunks and go for it        int A = BytesTo32bits(src, srcIndex);        int B = BytesTo32bits(src, srcIndex + 4);        int C = BytesTo32bits(src, srcIndex + 8);        int D = BytesTo32bits(src, srcIndex + 12);        CAST_Encipher(A, B, C, D, result);        // now stuff them into the destination block        Bits32ToBytes(result[0], dst, dstIndex);        Bits32ToBytes(result[1], dst, dstIndex + 4);        Bits32ToBytes(result[2], dst, dstIndex + 8);        Bits32ToBytes(result[3], dst, dstIndex + 12);        return BLOCK_SIZE;    }    /**     * Decrypt the given input starting at the given offset and place     * the result in the provided buffer starting at the given offset.     *     * @param src        The plaintext buffer     * @param srcIndex    An offset into src     * @param dst        The ciphertext buffer     * @param dstIndex    An offset into dst     */    protected int decryptBlock(        byte[] src,         int srcIndex,        byte[] dst,        int dstIndex)    {        int  result[] = new int[4];        // process the input block        // batch the units up into 4x32 bit chunks and go for it        int A = BytesTo32bits(src, srcIndex);        int B = BytesTo32bits(src, srcIndex + 4);        int C = BytesTo32bits(src, srcIndex + 8);        int D = BytesTo32bits(src, srcIndex + 12);        CAST_Decipher(A, B, C, D, result);        // now stuff them into the destination block        Bits32ToBytes(result[0], dst, dstIndex);        Bits32ToBytes(result[1], dst, dstIndex + 4);        Bits32ToBytes(result[2], dst, dstIndex + 8);        Bits32ToBytes(result[3], dst, dstIndex + 12);        return BLOCK_SIZE;    }    /**     * Does the 12 quad rounds rounds to encrypt the block.     *      * @param A    the 00-31  bits of the plaintext block     * @param B    the 32-63  bits of the plaintext block     * @param C    the 64-95  bits of the plaintext block     * @param D    the 96-127 bits of the plaintext block     * @param result the resulting ciphertext     */    protected final void CAST_Encipher(int A, int B, int C, int D,int result[])    {        int x;        for (int i=0; i< 6; i++)        {            x = i*4;            // BETA <- Qi(BETA)            C ^= F1(D, _Km[x + 0], _Kr[x + 0]);            B ^= F2(C, _Km[x + 1], _Kr[x + 1]);            A ^= F3(B, _Km[x + 2], _Kr[x + 2]);            D ^= F1(A, _Km[x + 3], _Kr[x + 3]);        }        for (int i=6; i<12; i++)        {            x = i*4;            // BETA <- QBARi(BETA)            D ^= F1(A, _Km[x + 3], _Kr[x + 3]);            A ^= F3(B, _Km[x + 2], _Kr[x + 2]);            B ^= F2(C, _Km[x + 1], _Kr[x + 1]);            C ^= F1(D, _Km[x + 0], _Kr[x + 0]);        }        result[0] = A;        result[1] = B;        result[2] = C;        result[3] = D;        return;    }    /**     * Does the 12 quad rounds rounds to decrypt the block.     *      * @param A    the 00-31  bits of the ciphertext block     * @param B    the 32-63  bits of the ciphertext block     * @param C    the 64-95  bits of the ciphertext block     * @param D    the 96-127 bits of the ciphertext block     * @param result the resulting plaintext     */    protected final void CAST_Decipher(int A, int B, int C, int D,int result[])    {        int x;        for (int i=0; i< 6; i++)        {            x = (11-i)*4;            // BETA <- Qi(BETA)            C ^= F1(D, _Km[x + 0], _Kr[x + 0]);            B ^= F2(C, _Km[x + 1], _Kr[x + 1]);            A ^= F3(B, _Km[x + 2], _Kr[x + 2]);            D ^= F1(A, _Km[x + 3], _Kr[x + 3]);        }        for (int i=6; i<12; i++)        {            x = (11-i)*4;            // BETA <- QBARi(BETA)            D ^= F1(A, _Km[x + 3], _Kr[x + 3]);            A ^= F3(B, _Km[x + 2], _Kr[x + 2]);            B ^= F2(C, _Km[x + 1], _Kr[x + 1]);            C ^= F1(D, _Km[x + 0], _Kr[x + 0]);        }        result[0] = A;        result[1] = B;        result[2] = C;        result[3] = D;        return;    }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产综合色在线视频区| 在线观看一区不卡| 91免费在线视频观看| 欧美精品九九99久久| 国产精品午夜在线观看| 裸体歌舞表演一区二区| 色综合 综合色| 久久亚洲精品国产精品紫薇| 亚洲一区在线电影| 99精品视频一区二区| 日韩你懂的电影在线观看| 亚洲综合一二三区| 成人午夜碰碰视频| 精品国产伦理网| 午夜精品影院在线观看| 99久久精品免费看国产| 国产亚洲精品免费| 精品亚洲aⅴ乱码一区二区三区| 欧洲精品中文字幕| 亚洲免费资源在线播放| 大桥未久av一区二区三区中文| 欧美一级理论片| 亚洲成av人**亚洲成av**| 91在线精品一区二区三区| 国产欧美一区二区三区在线老狼| 日韩激情av在线| 欧美精品自拍偷拍| 亚洲成人精品一区| 欧美乱熟臀69xxxxxx| 午夜精品久久久久久不卡8050| 欧洲一区二区三区在线| 亚洲综合一区二区精品导航| 欧洲人成人精品| 亚洲3atv精品一区二区三区| 欧美午夜影院一区| 爽好久久久欧美精品| 欧美久久久影院| 日本一不卡视频| 日韩精品一区二区三区四区| 美女视频网站久久| 26uuu色噜噜精品一区二区| 久久99精品久久久久婷婷| 欧美精品一区二区三区蜜桃 | 日本一区二区在线不卡| 欧美96一区二区免费视频| 在线看日本不卡| 亚洲精品免费电影| 日本高清不卡aⅴ免费网站| 国产精品久久久久一区| www..com久久爱| 最新国产の精品合集bt伙计| 99视频一区二区| 欧美高清在线精品一区| a级精品国产片在线观看| 国产精品久线观看视频| av电影天堂一区二区在线观看| 国产三级精品视频| 高清不卡在线观看| 亚洲国产高清在线| 99精品视频在线免费观看| 最新国产成人在线观看| 日韩一区二区免费在线观看| 美日韩一区二区| 久久久久国产免费免费| 成人一区在线观看| 亚洲色图一区二区| 色婷婷综合在线| 日韩精品一级中文字幕精品视频免费观看 | 午夜欧美大尺度福利影院在线看| 在线亚洲一区二区| 视频一区欧美精品| 精品国偷自产国产一区| 粉嫩一区二区三区在线看| 国产精品久久久久久久裸模| 色综合久久综合| 男女性色大片免费观看一区二区 | 国产高清久久久| 亚洲人成小说网站色在线| 欧美美女黄视频| 国产综合一区二区| 亚洲久本草在线中文字幕| 精品视频全国免费看| 精品一区二区日韩| 亚洲欧美电影一区二区| 欧美日韩免费高清一区色橹橹| 国产精品一卡二卡在线观看| 亚洲久草在线视频| 久久综合九色综合97婷婷女人| 93久久精品日日躁夜夜躁欧美| 亚洲成人av免费| 国产女人水真多18毛片18精品视频| 91色婷婷久久久久合中文| 美女在线观看视频一区二区| 自拍偷拍国产亚洲| 精品国产一区二区亚洲人成毛片 | 亚洲va韩国va欧美va| 国产亚洲精品7777| 91精品国产色综合久久ai换脸| 成人黄色大片在线观看| 久久av资源网| 亚洲国产中文字幕| 亚洲国产精华液网站w| 91精品国产91久久综合桃花| 精品一区二区三区免费毛片爱| 中文字幕人成不卡一区| 国产精品久久毛片av大全日韩| 国产精品你懂的在线欣赏| 欧美日韩高清一区| 色综合久久久久网| 国产激情一区二区三区四区| 天堂精品中文字幕在线| 日韩一区二区三区四区| 欧美日韩黄色影视| 91在线精品一区二区| 国产aⅴ精品一区二区三区色成熟| 日本午夜一本久久久综合| 亚洲最新在线观看| 成人免费在线视频| 国产精品每日更新在线播放网址| 日韩精品一区二区三区视频 | 成人av小说网| 成人免费看视频| 精品综合久久久久久8888| 亚洲成人一区二区在线观看| 久久久久亚洲综合| 欧美精品在线观看一区二区| 欧美亚一区二区| 欧美日韩一卡二卡| 欧美视频在线一区| 在线观看中文字幕不卡| 欧美午夜片在线观看| 欧美三级视频在线观看| 91黄视频在线| 在线观看亚洲a| 欧美性一级生活| 欧美日韩一级大片网址| 欧美人体做爰大胆视频| 91精品国产综合久久福利| 日韩亚洲欧美高清| 91精品国产色综合久久不卡电影| 欧美一级精品在线| 久久亚洲二区三区| 久久精品亚洲精品国产欧美| 国产亲近乱来精品视频| 中文字幕精品一区二区精品绿巨人 | 日本不卡一区二区三区高清视频| 性久久久久久久| 九色综合国产一区二区三区| 国产精品资源网| 丁香五精品蜜臀久久久久99网站| caoporm超碰国产精品| 色噜噜久久综合| 欧美一区二视频| 久久综合网色—综合色88| 亚洲欧美一区二区在线观看| 亚洲一级二级三级在线免费观看| 亚洲激情图片一区| 午夜av区久久| 久久99国产精品久久99| 成人国产精品视频| 欧美日韩五月天| 久久综合色综合88| 亚洲精品第一国产综合野| 天天综合天天做天天综合| 国产福利一区二区三区| 欧美一a一片一级一片| 日韩亚洲欧美高清| 亚洲欧洲日本在线| 麻豆精品精品国产自在97香蕉 | 国产日韩精品视频一区| 亚洲欧美二区三区| 久久精品国产77777蜜臀| 色综合色狠狠天天综合色| 中文天堂在线一区| 午夜影院在线观看欧美| 韩国精品免费视频| 欧美片网站yy| 国产精品久久久久久久第一福利| 性做久久久久久久久| 床上的激情91.| 欧美一区欧美二区| 亚洲三级免费观看| 乱一区二区av| 日韩三级视频在线看| 一区二区三区在线播| 国产精品123| 久久久99久久精品欧美| 美女视频黄免费的久久| 欧美午夜精品久久久| 国产日产精品一区| 久久99精品久久久久久久久久久久| 欧美在线观看一区二区| 中文字幕成人av| 久久99久久99| 欧美日本免费一区二区三区| 伊人性伊人情综合网| 成人一区二区三区在线观看| 精品对白一区国产伦| 亚洲午夜av在线| 欧美日韩亚洲不卡|