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

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

?? rc2engine.java

?? 內容:基于jdk1.4的加密算法的具體實現
?? JAVA
字號:
package org.bouncycastle.crypto.engines;import org.bouncycastle.crypto.BlockCipher;import org.bouncycastle.crypto.CipherParameters;import org.bouncycastle.crypto.DataLengthException;import org.bouncycastle.crypto.params.KeyParameter;import org.bouncycastle.crypto.params.RC2Parameters;/** * an implementation of RC2 as described in RFC 2268 *      "A Description of the RC2(r) Encryption Algorithm" R. Rivest. */public class RC2Engine    implements BlockCipher{    //    // the values we use for key expansion (based on the digits of PI)    //    private static byte[] piTable =    {        (byte)0xd9, (byte)0x78, (byte)0xf9, (byte)0xc4, (byte)0x19, (byte)0xdd, (byte)0xb5, (byte)0xed,         (byte)0x28, (byte)0xe9, (byte)0xfd, (byte)0x79, (byte)0x4a, (byte)0xa0, (byte)0xd8, (byte)0x9d,         (byte)0xc6, (byte)0x7e, (byte)0x37, (byte)0x83, (byte)0x2b, (byte)0x76, (byte)0x53, (byte)0x8e,         (byte)0x62, (byte)0x4c, (byte)0x64, (byte)0x88, (byte)0x44, (byte)0x8b, (byte)0xfb, (byte)0xa2,         (byte)0x17, (byte)0x9a, (byte)0x59, (byte)0xf5, (byte)0x87, (byte)0xb3, (byte)0x4f, (byte)0x13,         (byte)0x61, (byte)0x45, (byte)0x6d, (byte)0x8d, (byte)0x9, (byte)0x81, (byte)0x7d, (byte)0x32,         (byte)0xbd, (byte)0x8f, (byte)0x40, (byte)0xeb, (byte)0x86, (byte)0xb7, (byte)0x7b, (byte)0xb,         (byte)0xf0, (byte)0x95, (byte)0x21, (byte)0x22, (byte)0x5c, (byte)0x6b, (byte)0x4e, (byte)0x82,         (byte)0x54, (byte)0xd6, (byte)0x65, (byte)0x93, (byte)0xce, (byte)0x60, (byte)0xb2, (byte)0x1c,         (byte)0x73, (byte)0x56, (byte)0xc0, (byte)0x14, (byte)0xa7, (byte)0x8c, (byte)0xf1, (byte)0xdc,         (byte)0x12, (byte)0x75, (byte)0xca, (byte)0x1f, (byte)0x3b, (byte)0xbe, (byte)0xe4, (byte)0xd1,         (byte)0x42, (byte)0x3d, (byte)0xd4, (byte)0x30, (byte)0xa3, (byte)0x3c, (byte)0xb6, (byte)0x26,         (byte)0x6f, (byte)0xbf, (byte)0xe, (byte)0xda, (byte)0x46, (byte)0x69, (byte)0x7, (byte)0x57,         (byte)0x27, (byte)0xf2, (byte)0x1d, (byte)0x9b, (byte)0xbc, (byte)0x94, (byte)0x43, (byte)0x3,         (byte)0xf8, (byte)0x11, (byte)0xc7, (byte)0xf6, (byte)0x90, (byte)0xef, (byte)0x3e, (byte)0xe7,         (byte)0x6, (byte)0xc3, (byte)0xd5, (byte)0x2f, (byte)0xc8, (byte)0x66, (byte)0x1e, (byte)0xd7,         (byte)0x8, (byte)0xe8, (byte)0xea, (byte)0xde, (byte)0x80, (byte)0x52, (byte)0xee, (byte)0xf7,         (byte)0x84, (byte)0xaa, (byte)0x72, (byte)0xac, (byte)0x35, (byte)0x4d, (byte)0x6a, (byte)0x2a,         (byte)0x96, (byte)0x1a, (byte)0xd2, (byte)0x71, (byte)0x5a, (byte)0x15, (byte)0x49, (byte)0x74,         (byte)0x4b, (byte)0x9f, (byte)0xd0, (byte)0x5e, (byte)0x4, (byte)0x18, (byte)0xa4, (byte)0xec,         (byte)0xc2, (byte)0xe0, (byte)0x41, (byte)0x6e, (byte)0xf, (byte)0x51, (byte)0xcb, (byte)0xcc,         (byte)0x24, (byte)0x91, (byte)0xaf, (byte)0x50, (byte)0xa1, (byte)0xf4, (byte)0x70, (byte)0x39,         (byte)0x99, (byte)0x7c, (byte)0x3a, (byte)0x85, (byte)0x23, (byte)0xb8, (byte)0xb4, (byte)0x7a,         (byte)0xfc, (byte)0x2, (byte)0x36, (byte)0x5b, (byte)0x25, (byte)0x55, (byte)0x97, (byte)0x31,         (byte)0x2d, (byte)0x5d, (byte)0xfa, (byte)0x98, (byte)0xe3, (byte)0x8a, (byte)0x92, (byte)0xae,         (byte)0x5, (byte)0xdf, (byte)0x29, (byte)0x10, (byte)0x67, (byte)0x6c, (byte)0xba, (byte)0xc9,         (byte)0xd3, (byte)0x0, (byte)0xe6, (byte)0xcf, (byte)0xe1, (byte)0x9e, (byte)0xa8, (byte)0x2c,         (byte)0x63, (byte)0x16, (byte)0x1, (byte)0x3f, (byte)0x58, (byte)0xe2, (byte)0x89, (byte)0xa9,         (byte)0xd, (byte)0x38, (byte)0x34, (byte)0x1b, (byte)0xab, (byte)0x33, (byte)0xff, (byte)0xb0,         (byte)0xbb, (byte)0x48, (byte)0xc, (byte)0x5f, (byte)0xb9, (byte)0xb1, (byte)0xcd, (byte)0x2e,         (byte)0xc5, (byte)0xf3, (byte)0xdb, (byte)0x47, (byte)0xe5, (byte)0xa5, (byte)0x9c, (byte)0x77,         (byte)0xa, (byte)0xa6, (byte)0x20, (byte)0x68, (byte)0xfe, (byte)0x7f, (byte)0xc1, (byte)0xad     };    private static final int BLOCK_SIZE = 8;    private int[]   workingKey;    private boolean encrypting;    private int[] generateWorkingKey(        byte[]      key,        int         bits)    {        int     x;        int[]   xKey = new int[128];        for (int i = 0; i != key.length; i++)        {            xKey[i] = key[i] & 0xff;        }        // Phase 1: Expand input key to 128 bytes        int len = key.length;        if (len < 128)        {            int     index = 0;            x = xKey[len - 1];            do            {                x = piTable[(x + xKey[index++]) & 255] & 0xff;                xKey[len++] = x;            }            while (len < 128);        }        // Phase 2 - reduce effective key size to "bits"        len = (bits + 7) >> 3;        x = piTable[xKey[128 - len] & (255 >> (7 & -bits))] & 0xff;        xKey[128 - len] = x;        for (int i = 128 - len - 1; i >= 0; i--)        {                x = piTable[x ^ xKey[i + len]] & 0xff;                xKey[i] = x;        }        // Phase 3 - copy to newKey in little-endian order         int[] newKey = new int[64];        for (int i = 0; i != newKey.length; i++)        {            newKey[i] = (xKey[2 * i] + (xKey[2 * i + 1] << 8));        }        return newKey;    }    /**     * initialise a RC2 cipher.     *     * @param encrypting whether or not we are for encryption.     * @param params the parameters required to set up the cipher.     * @exception IllegalArgumentException if the params argument is     * inappropriate.     */    public void init(        boolean           encrypting,        CipherParameters  params)    {        this.encrypting = encrypting;        if (params instanceof RC2Parameters)        {            RC2Parameters   param = (RC2Parameters)params;            workingKey = generateWorkingKey(param.getKey(),                                            param.getEffectiveKeyBits());        }        else if (params instanceof KeyParameter)        {            byte[]    key = ((KeyParameter)params).getKey();            workingKey = generateWorkingKey(key, key.length * 8);        }        else        {            throw new IllegalArgumentException("invalid parameter passed to RC2 init - " + params.getClass().getName());        }    }    public void reset()    {    }    public String getAlgorithmName()    {        return "RC2";    }    public int getBlockSize()    {        return BLOCK_SIZE;    }    public final int processBlock(        byte[] in,        int inOff,        byte[] out,        int outOff)    {        if (workingKey == null)        {            throw new IllegalStateException("RC2 engine not initialised");        }        if ((inOff + BLOCK_SIZE) > in.length)        {            throw new DataLengthException("input buffer too short");        }        if ((outOff + BLOCK_SIZE) > out.length)        {            throw new DataLengthException("output buffer too short");        }        if (encrypting)        {            encryptBlock(in, inOff, out, outOff);        }        else        {            decryptBlock(in, inOff, out, outOff);        }        return BLOCK_SIZE;    }    /**     * return the result rotating the 16 bit number in x left by y     */    private int rotateWordLeft(        int x,        int y)    {        x &= 0xffff;        return (x << y) | (x >> (16 - y));    }    private void encryptBlock(        byte[]  in,        int     inOff,        byte[]  out,        int     outOff)    {        int x76, x54, x32, x10;        x76 = ((in[inOff + 7] & 0xff) << 8) + (in[inOff + 6] & 0xff);        x54 = ((in[inOff + 5] & 0xff) << 8) + (in[inOff + 4] & 0xff);        x32 = ((in[inOff + 3] & 0xff) << 8) + (in[inOff + 2] & 0xff);        x10 = ((in[inOff + 1] & 0xff) << 8) + (in[inOff + 0] & 0xff);        for (int i = 0; i <= 16; i += 4)        {                x10 = rotateWordLeft(x10 + (x32 & ~x76) + (x54 & x76) + workingKey[i  ], 1);                x32 = rotateWordLeft(x32 + (x54 & ~x10) + (x76 & x10) + workingKey[i+1], 2);                x54 = rotateWordLeft(x54 + (x76 & ~x32) + (x10 & x32) + workingKey[i+2], 3);                x76 = rotateWordLeft(x76 + (x10 & ~x54) + (x32 & x54) + workingKey[i+3], 5);        }        x10 += workingKey[x76 & 63];        x32 += workingKey[x10 & 63];        x54 += workingKey[x32 & 63];        x76 += workingKey[x54 & 63];        for (int i = 20; i <= 40; i += 4)        {                x10 = rotateWordLeft(x10 + (x32 & ~x76) + (x54 & x76) + workingKey[i  ], 1);                x32 = rotateWordLeft(x32 + (x54 & ~x10) + (x76 & x10) + workingKey[i+1], 2);                x54 = rotateWordLeft(x54 + (x76 & ~x32) + (x10 & x32) + workingKey[i+2], 3);                x76 = rotateWordLeft(x76 + (x10 & ~x54) + (x32 & x54) + workingKey[i+3], 5);        }        x10 += workingKey[x76 & 63];        x32 += workingKey[x10 & 63];        x54 += workingKey[x32 & 63];        x76 += workingKey[x54 & 63];        for (int i = 44; i < 64; i += 4)        {                x10 = rotateWordLeft(x10 + (x32 & ~x76) + (x54 & x76) + workingKey[i  ], 1);                x32 = rotateWordLeft(x32 + (x54 & ~x10) + (x76 & x10) + workingKey[i+1], 2);                x54 = rotateWordLeft(x54 + (x76 & ~x32) + (x10 & x32) + workingKey[i+2], 3);                x76 = rotateWordLeft(x76 + (x10 & ~x54) + (x32 & x54) + workingKey[i+3], 5);        }        out[outOff + 0] = (byte)x10;        out[outOff + 1] = (byte)(x10 >> 8);        out[outOff + 2] = (byte)x32;        out[outOff + 3] = (byte)(x32 >> 8);        out[outOff + 4] = (byte)x54;        out[outOff + 5] = (byte)(x54 >> 8);        out[outOff + 6] = (byte)x76;        out[outOff + 7] = (byte)(x76 >> 8);    }    private void decryptBlock(        byte[]  in,        int     inOff,        byte[]  out,        int     outOff)    {        int x76, x54, x32, x10;        x76 = ((in[inOff + 7] & 0xff) << 8) + (in[inOff + 6] & 0xff);        x54 = ((in[inOff + 5] & 0xff) << 8) + (in[inOff + 4] & 0xff);        x32 = ((in[inOff + 3] & 0xff) << 8) + (in[inOff + 2] & 0xff);        x10 = ((in[inOff + 1] & 0xff) << 8) + (in[inOff + 0] & 0xff);        for (int i = 60; i >= 44; i -= 4)        {            x76 = rotateWordLeft(x76, 11) - ((x10 & ~x54) + (x32 & x54) + workingKey[i+3]);            x54 = rotateWordLeft(x54, 13) - ((x76 & ~x32) + (x10 & x32) + workingKey[i+2]);            x32 = rotateWordLeft(x32, 14) - ((x54 & ~x10) + (x76 & x10) + workingKey[i+1]);            x10 = rotateWordLeft(x10, 15) - ((x32 & ~x76) + (x54 & x76) + workingKey[i  ]);        }        x76 -= workingKey[x54 & 63];        x54 -= workingKey[x32 & 63];        x32 -= workingKey[x10 & 63];        x10 -= workingKey[x76 & 63];        for (int i = 40; i >= 20; i -= 4)        {            x76 = rotateWordLeft(x76, 11) - ((x10 & ~x54) + (x32 & x54) + workingKey[i+3]);            x54 = rotateWordLeft(x54, 13) - ((x76 & ~x32) + (x10 & x32) + workingKey[i+2]);            x32 = rotateWordLeft(x32, 14) - ((x54 & ~x10) + (x76 & x10) + workingKey[i+1]);            x10 = rotateWordLeft(x10, 15) - ((x32 & ~x76) + (x54 & x76) + workingKey[i  ]);        }        x76 -= workingKey[x54 & 63];        x54 -= workingKey[x32 & 63];        x32 -= workingKey[x10 & 63];        x10 -= workingKey[x76 & 63];        for (int i = 16; i >= 0; i -= 4)        {            x76 = rotateWordLeft(x76, 11) - ((x10 & ~x54) + (x32 & x54) + workingKey[i+3]);            x54 = rotateWordLeft(x54, 13) - ((x76 & ~x32) + (x10 & x32) + workingKey[i+2]);            x32 = rotateWordLeft(x32, 14) - ((x54 & ~x10) + (x76 & x10) + workingKey[i+1]);            x10 = rotateWordLeft(x10, 15) - ((x32 & ~x76) + (x54 & x76) + workingKey[i  ]);        }        out[outOff + 0] = (byte)x10;        out[outOff + 1] = (byte)(x10 >> 8);        out[outOff + 2] = (byte)x32;        out[outOff + 3] = (byte)(x32 >> 8);        out[outOff + 4] = (byte)x54;        out[outOff + 5] = (byte)(x54 >> 8);        out[outOff + 6] = (byte)x76;        out[outOff + 7] = (byte)(x76 >> 8);    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看91av| 欧美日韩在线亚洲一区蜜芽| 日韩中文字幕区一区有砖一区 | 不卡的看片网站| 极品美女销魂一区二区三区 | 色婷婷av久久久久久久| 成人av资源下载| av亚洲精华国产精华精| 99久久综合99久久综合网站| 成人免费视频app| 色偷偷成人一区二区三区91| 日本国产一区二区| 4438x成人网最大色成网站| 欧美精品777| 久久一二三国产| 欧美国产精品一区二区| 日韩美女视频一区二区| 亚洲大片在线观看| 国内精品伊人久久久久av一坑| 国产资源在线一区| 99久久精品免费看国产免费软件| 色丁香久综合在线久综合在线观看| 色屁屁一区二区| 日韩一区二区中文字幕| 国产欧美精品一区二区三区四区| 亚洲欧洲国产专区| 香蕉成人啪国产精品视频综合网| 麻豆成人91精品二区三区| 国产成人精品免费视频网站| 欧美亚洲一区三区| 精品不卡在线视频| 中文字幕一区二区日韩精品绯色| 亚洲主播在线播放| 国产精品99久久久| 欧美日韩一区二区三区在线| 亚洲精品在线观看网站| 亚洲乱码日产精品bd | 日韩一区二区免费视频| 久久久亚洲高清| 亚洲国产精品久久久久秋霞影院| 美女一区二区视频| 91免费版在线| 2017欧美狠狠色| 亚洲成人自拍一区| 99视频有精品| 久久香蕉国产线看观看99| 亚洲一区二区高清| 成人av网在线| 精品精品国产高清a毛片牛牛 | 成人禁用看黄a在线| 欧美日韩成人一区| 亚洲女同ⅹxx女同tv| 国产乱淫av一区二区三区| 欧美精品自拍偷拍| 有码一区二区三区| 岛国av在线一区| 久久亚洲影视婷婷| 黑人巨大精品欧美一区| 91精品国产手机| 午夜精品成人在线| 91成人在线精品| 综合分类小说区另类春色亚洲小说欧美| 久久狠狠亚洲综合| 日韩视频一区二区在线观看| 亚洲国产中文字幕在线视频综合| av色综合久久天堂av综合| 久久亚洲精品小早川怜子| 麻豆精品视频在线| 日韩美女天天操| 麻豆高清免费国产一区| 日韩精品一区二区三区中文不卡| 亚洲成人av中文| 欧美日韩国产精品自在自线| 亚洲一区在线观看网站| 在线视频你懂得一区二区三区| 中文字幕一区二区三区在线播放| www.亚洲人| 亚洲精选在线视频| 欧美日韩一区高清| 蜜臀av一区二区| 精品久久国产老人久久综合| 精品在线观看免费| 国产日韩欧美综合一区| 国产成人在线观看免费网站| 国产精品五月天| 色综合一个色综合| 日韩福利电影在线| 精品国产免费视频| 国产不卡高清在线观看视频| 国产精品色婷婷| 欧美性猛片xxxx免费看久爱| 日韩电影在线观看一区| 精品国产乱子伦一区| 成人免费看片app下载| 日韩理论电影院| 91精品久久久久久蜜臀| 久久av资源网| 国产精品久久看| 7777精品伊人久久久大香线蕉的| 美女一区二区在线观看| 国产精品久久免费看| 欧美老肥妇做.爰bbww视频| 看片的网站亚洲| 中文字幕一区二| 日韩欧美国产高清| 99免费精品在线| 欧美bbbbb| 亚洲三级电影网站| 日韩亚洲国产中文字幕欧美| 国产电影精品久久禁18| 亚洲无线码一区二区三区| 久久婷婷色综合| 欧美高清你懂得| 成人免费看的视频| 久久国内精品自在自线400部| 亚洲少妇屁股交4| 亚洲精品在线一区二区| 欧美性高清videossexo| 国产不卡视频在线观看| 蜜桃av噜噜一区| 亚洲一区在线观看视频| 国产女人18水真多18精品一级做| 欧美在线免费视屏| 不卡一区在线观看| 日本在线不卡视频| 亚洲精品自拍动漫在线| 国产色产综合产在线视频| 5月丁香婷婷综合| 在线观看日韩毛片| 成人开心网精品视频| 久久99蜜桃精品| 日一区二区三区| 亚洲大片精品永久免费| 亚洲另类色综合网站| 日本一区二区成人| 欧美乱妇一区二区三区不卡视频| 99久久精品免费观看| 国产成人av在线影院| 精品无人区卡一卡二卡三乱码免费卡 | 日本少妇一区二区| 亚洲一区二区三区精品在线| 国产精品久久久久久久久图文区| 久久天天做天天爱综合色| 日韩一区二区电影网| 4438x成人网最大色成网站| 欧美亚洲国产bt| 欧美羞羞免费网站| 欧洲av在线精品| 欧美日韩精品免费| 538在线一区二区精品国产| 欧亚洲嫩模精品一区三区| 91久久一区二区| 在线观看欧美精品| 欧美影院精品一区| 欧美喷潮久久久xxxxx| 欧美日韩不卡视频| 日韩美一区二区三区| 日韩欧美一二三四区| 欧美电视剧免费观看| 久久久美女艺术照精彩视频福利播放| 日韩女优av电影在线观看| 亚洲精品一区二区三区四区高清 | 制服丝袜av成人在线看| 欧美欧美欧美欧美| 日韩一区二区三区三四区视频在线观看 | 在线电影国产精品| 欧美一卡二卡三卡| 精品国产免费视频| 中文字幕中文在线不卡住| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲在线免费播放| 美女视频黄 久久| 国产最新精品精品你懂的| 粉嫩一区二区三区性色av| 91丨国产丨九色丨pron| 欧美日韩一区在线观看| 2024国产精品| 一区二区欧美在线观看| 轻轻草成人在线| 成人午夜av电影| 欧美在线观看视频在线| 欧美成人在线直播| 中文字幕一区在线| 天天亚洲美女在线视频| 国产一区欧美日韩| 99九九99九九九视频精品| 欧美一区二区三区啪啪| 日本一区二区在线不卡| 日韩在线一二三区| 成人午夜免费视频| 欧美日韩国产精品成人| 国产精品国产自产拍在线| 青青草伊人久久| 91一区二区在线| 日韩女同互慰一区二区| 中文字幕一区二区三中文字幕| 久久超碰97中文字幕| 91福利视频久久久久| 中文字幕国产精品一区二区| 男女性色大片免费观看一区二区|