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

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

?? rijndael.java

?? 完整的Rijndael加密c算法 以及Rijndael的J2ME實現 還有Rijndael的原理講解文檔
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
import java.io.*;public final class Rijndael {    public Rijndael() {    }    /**     * Flag to setup the encryption key schedule.     */    public static final int DIR_ENCRYPT = 1;    /**     * Flag to setup the decryption key schedule.     */    public static final int DIR_DECRYPT = 2;    /**     * Flag to setup both key schedules (encryption/decryption).     */    public static final int DIR_BOTH    = (DIR_ENCRYPT|DIR_DECRYPT);    /**     * AES block size in bits     * (N.B. the Rijndael algorithm itself allows for other sizes).     */    public static final int BLOCK_BITS  = 128;    /**     * AES block size in bytes     * (N.B. the Rijndael algorithm itself allows for other sizes).     */    public static final int BLOCK_SIZE  = (BLOCK_BITS >>> 3);    /**     * Substitution table (S-box).     */    private static final String SS =        "\u637C\u777B\uF26B\u6FC5\u3001\u672B\uFED7\uAB76" +        "\uCA82\uC97D\uFA59\u47F0\uADD4\uA2AF\u9CA4\u72C0" +        "\uB7FD\u9326\u363F\uF7CC\u34A5\uE5F1\u71D8\u3115" +        "\u04C7\u23C3\u1896\u059A\u0712\u80E2\uEB27\uB275" +        "\u0983\u2C1A\u1B6E\u5AA0\u523B\uD6B3\u29E3\u2F84" +        "\u53D1\u00ED\u20FC\uB15B\u6ACB\uBE39\u4A4C\u58CF" +        "\uD0EF\uAAFB\u434D\u3385\u45F9\u027F\u503C\u9FA8" +        "\u51A3\u408F\u929D\u38F5\uBCB6\uDA21\u10FF\uF3D2" +        "\uCD0C\u13EC\u5F97\u4417\uC4A7\u7E3D\u645D\u1973" +        "\u6081\u4FDC\u222A\u9088\u46EE\uB814\uDE5E\u0BDB" +        "\uE032\u3A0A\u4906\u245C\uC2D3\uAC62\u9195\uE479" +        "\uE7C8\u376D\u8DD5\u4EA9\u6C56\uF4EA\u657A\uAE08" +        "\uBA78\u252E\u1CA6\uB4C6\uE8DD\u741F\u4BBD\u8B8A" +        "\u703E\uB566\u4803\uF60E\u6135\u57B9\u86C1\u1D9E" +        "\uE1F8\u9811\u69D9\u8E94\u9B1E\u87E9\uCE55\u28DF" +        "\u8CA1\u890D\uBFE6\u4268\u4199\u2D0F\uB054\uBB16";    private static final byte[]        Se = new byte[256];    private static final int[]        Te0 = new int[256],        Te1 = new int[256],        Te2 = new int[256],        Te3 = new int[256];    private static final byte[]        Sd = new byte[256];    private static final int[]        Td0 = new int[256],        Td1 = new int[256],        Td2 = new int[256],        Td3 = new int[256];    /**     * Round constants     */    private static final int[]        rcon = new int[10]; /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */    /**     * Number of rounds (depends on key size).     */    private int Nr = 0;    private int Nk = 0;    private int Nw = 0;    /**     * Encryption key schedule     */    private int rek[] = null;    /**     * Decryption key schedule     */    private int rdk[] = null;    static {        /*            Te0[x] = Se[x].[02, 01, 01, 03];            Te1[x] = Se[x].[03, 02, 01, 01];            Te2[x] = Se[x].[01, 03, 02, 01];            Te3[x] = Se[x].[01, 01, 03, 02];            	            Td0[x] = Sd[x].[0e, 09, 0d, 0b];            Td1[x] = Sd[x].[0b, 0e, 09, 0d];            Td2[x] = Sd[x].[0d, 0b, 0e, 09];            Td3[x] = Sd[x].[09, 0d, 0b, 0e];        */        int ROOT = 0x11B;        int s1, s2, s3, i1, i2, i4, i8, i9, ib, id, ie, t;        for (i1 = 0; i1 < 256; i1++) {            char c = SS.charAt(i1 >>> 1);            s1 = (byte)((i1 & 1) == 0 ? c >>> 8 : c) & 0xff;            s2 = s1 << 1;            if (s2 >= 0x100) {                s2 ^= ROOT;            }            s3 = s2 ^ s1;            i2 = i1 << 1;            if (i2 >= 0x100) {                i2 ^= ROOT;            }            i4 = i2 << 1;            if (i4 >= 0x100) {                i4 ^= ROOT;            }            i8 = i4 << 1;            if (i8 >= 0x100) {                i8 ^= ROOT;            }            i9 = i8 ^ i1;            ib = i9 ^ i2;            id = i9 ^ i4;            ie = i8 ^ i4 ^ i2;            Se[i1] = (byte)s1;            Te0[i1] = t = (s2 << 24) | (s1 << 16) | (s1 << 8) | s3;            Te1[i1] = (t >>>  8) | (t  << 24);            Te2[i1] = (t >>> 16) | (t  << 16);            Te3[i1] = (t >>> 24) | (t  <<  8);            Sd[s1] = (byte)i1;            Td0[s1] = t = (ie << 24) | (i9 << 16) | (id << 8) | ib;            Td1[s1] = (t >>>  8) | (t  << 24);            Td2[s1] = (t >>> 16) | (t  << 16);            Td3[s1] = (t >>> 24) | (t  <<  8);		}        /*         * round constants         */        int r = 1;        rcon[0] = r << 24;        for (int i = 1; i < 10; i++) {            r <<= 1;            if (r >= 0x100) {                r ^= ROOT;            }            rcon[i] = r << 24;        }    }    /**     * Expand a cipher key into a full encryption key schedule.     *     * @param   cipherKey   the cipher key (128, 192, or 256 bits).     */    private void expandKey(byte[] cipherKey) {        int temp, r = 0;        for (int i = 0, k = 0; i < Nk; i++, k += 4) {            rek[i] =                ((cipherKey[k    ]       ) << 24) |                ((cipherKey[k + 1] & 0xff) << 16) |                ((cipherKey[k + 2] & 0xff) <<  8) |                ((cipherKey[k + 3] & 0xff));        }        for (int i = Nk, n = 0; i < Nw; i++, n--) {            temp = rek[i - 1];            if (n == 0) {            	n = Nk;                temp =                    ((Se[(temp >>> 16) & 0xff]       ) << 24) |                    ((Se[(temp >>>  8) & 0xff] & 0xff) << 16) |                    ((Se[(temp       ) & 0xff] & 0xff) <<  8) |                    ((Se[(temp >>> 24)       ] & 0xff));                temp ^= rcon[r++];            } else if (Nk == 8 && n == 4) {                temp =                    ((Se[(temp >>> 24)       ]       ) << 24) |                    ((Se[(temp >>> 16) & 0xff] & 0xff) << 16) |                    ((Se[(temp >>>  8) & 0xff] & 0xff) <<  8) |                    ((Se[(temp       ) & 0xff] & 0xff));            }            rek[i] = rek[i - Nk] ^ temp;        }        temp = 0;    }	/*	 * Faster implementation of the key expansion	 * (only worthwhile in Rijndael is used in a hashing function mode).	 */	/*    private void expandKey(byte[] cipherKey) {        int keyOffset = 0;   	    int i = 0;	    int temp;        rek[0] =            (cipherKey[ 0]       ) << 24 |            (cipherKey[ 1] & 0xff) << 16 |            (cipherKey[ 2] & 0xff) <<  8 |            (cipherKey[ 3] & 0xff);	    rek[1] =            (cipherKey[ 4]       ) << 24 |            (cipherKey[ 5] & 0xff) << 16 |            (cipherKey[ 6] & 0xff) <<  8 |            (cipherKey[ 7] & 0xff);	    rek[2] =            (cipherKey[ 8]       ) << 24 |            (cipherKey[ 9] & 0xff) << 16 |            (cipherKey[10] & 0xff) <<  8 |            (cipherKey[11] & 0xff);	    rek[3] =            (cipherKey[12]       ) << 24 |            (cipherKey[13] & 0xff) << 16 |            (cipherKey[14] & 0xff) <<  8 |            (cipherKey[15] & 0xff);	    if (Nk == 4) {	    	for (;;) {	    		temp = rek[keyOffset + 3];	    		rek[keyOffset + 4] = rek[keyOffset] ^	    			((Se[(temp >>> 16) & 0xff]       ) << 24) ^	    			((Se[(temp >>>  8) & 0xff] & 0xff) << 16) ^                    ((Se[(temp       ) & 0xff] & 0xff) <<  8) ^                    ((Se[(temp >>> 24)       ] & 0xff)      ) ^	    			rcon[i];	    		rek[keyOffset + 5] = rek[keyOffset + 1] ^ rek[keyOffset + 4];	    		rek[keyOffset + 6] = rek[keyOffset + 2] ^ rek[keyOffset + 5];	    		rek[keyOffset + 7] = rek[keyOffset + 3] ^ rek[keyOffset + 6];	    		if (++i == 10) {	    			return;	    		}	    		keyOffset += 4;	    	}	    }        rek[keyOffset + 4] =            (cipherKey[16]       ) << 24 |            (cipherKey[17] & 0xff) << 16 |            (cipherKey[18] & 0xff) <<  8 |            (cipherKey[19] & 0xff);	    rek[keyOffset + 5] =            (cipherKey[20]       ) << 24 |            (cipherKey[21] & 0xff) << 16 |            (cipherKey[22] & 0xff) <<  8 |            (cipherKey[23] & 0xff);	    if (Nk == 6) {	    	for (;;) {	    		temp = rek[keyOffset + 5];	    		rek[keyOffset +  6] = rek[keyOffset] ^                    ((Se[(temp >>> 16) & 0xff]       ) << 24) ^                    ((Se[(temp >>>  8) & 0xff] & 0xff) << 16) ^                    ((Se[(temp       ) & 0xff] & 0xff) <<  8) ^                    ((Se[(temp >>> 24)       ] & 0xff)      ) ^                    rcon[i];	    		rek[keyOffset +  7] = rek[keyOffset +  1] ^ rek[keyOffset +  6];	    		rek[keyOffset +  8] = rek[keyOffset +  2] ^ rek[keyOffset +  7];	    		rek[keyOffset +  9] = rek[keyOffset +  3] ^ rek[keyOffset +  8];	    		if (++i == 8) {	    			return;	    		}	    		rek[keyOffset + 10] = rek[keyOffset +  4] ^ rek[keyOffset +  9];	    		rek[keyOffset + 11] = rek[keyOffset +  5] ^ rek[keyOffset + 10];	    		keyOffset += 6;	    	}	    }        rek[keyOffset + 6] =            (cipherKey[24]       ) << 24 |            (cipherKey[25] & 0xff) << 16 |            (cipherKey[26] & 0xff) <<  8 |            (cipherKey[27] & 0xff);	    rek[keyOffset + 7] =            (cipherKey[28]       ) << 24 |            (cipherKey[29] & 0xff) << 16 |            (cipherKey[30] & 0xff) <<  8 |            (cipherKey[31] & 0xff);	    if (Nk == 8) {            for (;;) {            	temp = rek[keyOffset +  7];            	rek[keyOffset +  8] = rek[keyOffset] ^                    ((Se[(temp >>> 16) & 0xff]       ) << 24) ^                    ((Se[(temp >>>  8) & 0xff] & 0xff) << 16) ^                    ((Se[(temp       ) & 0xff] & 0xff) <<  8) ^                    ((Se[(temp >>> 24)       ] & 0xff)      ) ^                    rcon[i];            	rek[keyOffset +  9] = rek[keyOffset +  1] ^ rek[keyOffset +  8];            	rek[keyOffset + 10] = rek[keyOffset +  2] ^ rek[keyOffset +  9];            	rek[keyOffset + 11] = rek[keyOffset +  3] ^ rek[keyOffset + 10];	    		if (++i == 7) {	    			return;	    		}            	temp = rek[keyOffset + 11];            	rek[keyOffset + 12] = rek[keyOffset +  4] ^            		((Se[(temp >>> 24)       ]       ) << 24) ^            		((Se[(temp >>> 16) & 0xff] & 0xff) << 16) ^            		((Se[(temp >>>  8) & 0xff] & 0xff) <<  8) ^            		((Se[(temp       ) & 0xff] & 0xff));            	rek[keyOffset + 13] = rek[keyOffset +  5] ^ rek[keyOffset + 12];            	rek[keyOffset + 14] = rek[keyOffset +  6] ^ rek[keyOffset + 13];            	rek[keyOffset + 15] = rek[keyOffset +  7] ^ rek[keyOffset + 14];	    		keyOffset += 8;            }	    }    }    */    /**     * Compute the decryption schedule from the encryption schedule .     */    private void invertKey() {        int d = 0, e = 4*Nr, w;	    /*         * apply the inverse MixColumn transform to all round keys         * but the first and the last:         */        rdk[d    ] = rek[e    ];        rdk[d + 1] = rek[e + 1];        rdk[d + 2] = rek[e + 2];        rdk[d + 3] = rek[e + 3];	    d += 4;	    e -= 4;	    for (int r = 1; r < Nr; r++) {            w = rek[e    ];	    	rdk[d    ] =	    		Td0[Se[(w >>> 24)       ] & 0xff] ^	    		Td1[Se[(w >>> 16) & 0xff] & 0xff] ^	    		Td2[Se[(w >>>  8) & 0xff] & 0xff] ^	    		Td3[Se[(w       ) & 0xff] & 0xff];            w = rek[e + 1];	    	rdk[d + 1] =	    		Td0[Se[(w >>> 24)       ] & 0xff] ^

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影精品一区二区| 狠狠色狠狠色综合系列| av资源网一区| 亚洲欧美经典视频| 一本到不卡免费一区二区| 一区二区三区在线视频观看| 在线中文字幕一区| 肉肉av福利一精品导航| 欧美电视剧免费全集观看 | 久久久精品国产免大香伊| 久久99国产乱子伦精品免费| 国产蜜臀av在线一区二区三区| 高清在线观看日韩| 亚洲电影你懂得| 久久亚洲二区三区| 欧美日韩高清一区| 国产精品一区二区91| 午夜影视日本亚洲欧洲精品| 日韩精品视频网站| 国产在线视频精品一区| 国产一区二区三区免费看| 日韩精品亚洲一区二区三区免费| 久久精品二区亚洲w码| 亚洲一线二线三线视频| 国产精品国产三级国产普通话三级| 欧美日韩成人高清| 日韩精品综合一本久道在线视频| 久久久久九九视频| 亚洲少妇中出一区| 亚洲天堂久久久久久久| 午夜久久久久久| 午夜精品一区二区三区电影天堂 | 美女视频网站黄色亚洲| 综合婷婷亚洲小说| 石原莉奈一区二区三区在线观看| 韩国女主播成人在线| 91麻豆免费观看| 成人免费视频国产在线观看| 国产一区二区0| 91老师片黄在线观看| 精品美女一区二区三区| 日韩一级黄色大片| 欧美精品三级在线观看| 欧美日韩一区二区不卡| 欧美在线观看视频一区二区 | 亚洲免费在线电影| 国产乱码字幕精品高清av| 欧美在线|欧美| 国产精品欧美久久久久一区二区| 精品99一区二区三区| 欧美精品一区二区三| 一区二区成人在线视频| 床上的激情91.| 精品国产免费一区二区三区四区| 一区二区在线电影| 亚洲一区二区三区中文字幕在线| 国产一区二区主播在线| 日韩欧美一级在线播放| 亚洲一区二区三区四区在线免费观看| 国产成人av一区二区| caoporm超碰国产精品| 久久久精品综合| 久草中文综合在线| 欧美一个色资源| 日韩和欧美的一区| 欧美精品丝袜久久久中文字幕| 国产精品国产三级国产普通话三级| 国产精品亚洲专一区二区三区 | eeuss鲁片一区二区三区在线观看| 精品国精品自拍自在线| 日本在线不卡视频一二三区| 韩国精品免费视频| 日韩久久精品一区| 久久99久久精品欧美| 久久色成人在线| 国产99久久精品| 亚洲国产精品传媒在线观看| 亚洲乱码国产乱码精品精可以看| 暴力调教一区二区三区| 国产精品色在线观看| 成人ar影院免费观看视频| 欧美色网一区二区| 国产人久久人人人人爽| 国产99久久久国产精品| 国产精品久久毛片a| 91麻豆视频网站| 亚洲一区二区3| 91精品国产综合久久久久久漫画 | 精品视频在线看| 天天av天天翘天天综合网| 制服丝袜中文字幕一区| 日本不卡一区二区三区高清视频| 日韩欧美国产小视频| 国产一区二区不卡| 亚洲欧洲美洲综合色网| 九九在线精品视频| 欧美极品少妇xxxxⅹ高跟鞋| 不卡的电影网站| 亚洲一卡二卡三卡四卡| 91精品国产乱| 亚洲伊人色欲综合网| 欧美一个色资源| 成人精品小蝌蚪| 亚洲成人免费在线观看| 国产婷婷精品av在线| 日本成人超碰在线观看| 国产欧美一区二区在线观看| 91免费版在线看| 久久超碰97中文字幕| 国产精品久久看| 日韩精品一区二区三区老鸭窝| 国产精品1区2区| 日韩激情中文字幕| 中文字幕免费一区| 欧美精品tushy高清| jlzzjlzz亚洲女人18| 日韩精品电影在线| 亚洲靠逼com| 久久久久久久综合日本| 欧美丰满嫩嫩电影| aaa欧美大片| 精品在线亚洲视频| 亚洲 欧美综合在线网络| 国产精品―色哟哟| 欧美va亚洲va| 欧美性xxxxxxxx| 成人动漫一区二区在线| 国模无码大尺度一区二区三区| 亚洲与欧洲av电影| 亚洲欧美另类综合偷拍| 欧美国产日韩在线观看| 精品伦理精品一区| 欧美日本在线看| 日本高清不卡视频| www.久久精品| 成人午夜精品在线| 国产在线国偷精品免费看| 午夜a成v人精品| 一区二区三区四区视频精品免费 | 91香蕉视频黄| 国产不卡在线视频| 国产精品一区二区久久精品爱涩| 奇米四色…亚洲| 国产精品久久久一本精品| 欧美精品一区二区三区在线| 欧美裸体一区二区三区| 在线国产亚洲欧美| 91成人免费在线| 欧美三级电影网| 欧美日韩亚洲综合一区| 欧美系列亚洲系列| 欧美巨大另类极品videosbest| 欧美日韩综合不卡| 欧美日韩一区不卡| 91精品国产综合久久蜜臀| 日韩欧美黄色影院| 久久久久久久av麻豆果冻| 国产日本亚洲高清| 亚洲美女屁股眼交| 亚洲伊人色欲综合网| 三级久久三级久久| 久久99精品国产麻豆婷婷 | 亚洲欧美日韩在线| 亚洲精品水蜜桃| 亚洲h在线观看| 美脚の诱脚舐め脚责91 | 91黄色免费观看| 欧美日韩美女一区二区| 欧美肥胖老妇做爰| 久久嫩草精品久久久精品一| 国产欧美精品国产国产专区| 亚洲三级免费观看| 日本欧美一区二区三区| 九九**精品视频免费播放| 国产成人在线电影| 色综合久久久久综合99| 精品视频1区2区| 久久综合狠狠综合久久综合88| 中文一区二区在线观看| 亚洲激情六月丁香| 男女激情视频一区| 成人看片黄a免费看在线| 欧日韩精品视频| 久久久影视传媒| 亚洲第一二三四区| 国产成人亚洲综合a∨猫咪| 欧美在线短视频| 国产亚洲va综合人人澡精品| 亚洲综合偷拍欧美一区色| 久久se这里有精品| 色悠久久久久综合欧美99| 欧美岛国在线观看| 亚洲精品精品亚洲| 国产在线不卡一卡二卡三卡四卡| 97se狠狠狠综合亚洲狠狠| 91在线国产福利| 精品剧情v国产在线观看在线| 亚洲免费在线视频一区 二区| 精品一区二区三区在线播放| 91免费视频大全|