⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serpent_bitslice.java

📁 Serpent算法及vb实现 毕业设计是做的 希望对大家有帮助
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
  x2  =   x2  ^   x3  ^ (x1 <<7);  x0  = ((((x0))<<(5))| (((x0))>>>(32-(5)))) ;  x2  = ((((x2))<<(22))| (((x2))>>>(32-(22))))  ;  x0 ^=  K[26*4+0];  x1 ^=  K[26*4+1];  x2 ^=  K[26*4+2];  x3 ^=  K[26*4+3] ;/* S2:   8  6  7  9  3 12 10 15 13  1 14  4  0 11  5  2 *//* depth = 3,8,11,7, Total gates=16 */	t01 = x0  | x2 ;	t02 = x0  ^ x1 ;	t03 = x3  ^ t01;	y0  = t02 ^ t03;	t05 = x2  ^ y0 ;	t06 = x1  ^ t05;	t07 = x1  | t05;	t08 = t01 & t06;	t09 = t03 ^ t07;	t10 = t02 | t09;	y1  = t10 ^ t08;	t12 = x0  | x3 ;	t13 = t09 ^ y1 ;	t14 = x1  ^ t13;	y3  =     ~ t09;	y2  = t12 ^ t14;  x0  = ((((y0))<<(13))| (((y0))>>>(32-(13)))) ;  x2  = ((((y2))<<(3))| (((y2))>>>(32-(3)))) ;  x1  =   y1  ^   x0  ^   x2 ;  x3  =   y3  ^   x2  ^ (x0)<<3;  x1  = ((((x1))<<(1))| (((x1))>>>(32-(1)))) ;  x3  = ((((x3))<<(7))| (((x3))>>>(32-(7)))) ;  x0  =   x0  ^   x1  ^   x3 ;  x2  =   x2  ^   x3  ^ (x1 <<7);  x0  = ((((x0))<<(5))| (((x0))>>>(32-(5)))) ;  x2  = ((((x2))<<(22))| (((x2))>>>(32-(22))))  ;  x0 ^=  K[27*4+0];  x1 ^=  K[27*4+1];  x2 ^=  K[27*4+2];  x3 ^=  K[27*4+3] ;/* S3:   0 15 11  8 12  9  6  3 13  1  2  4 10  7  5 14 *//* depth = 8,3,5,5, Total gates=18 */	t01 = x0  ^ x2 ;	t02 = x0  | x3 ;	t03 = x0  & x3 ;	t04 = t01 & t02;	t05 = x1  | t03;	t06 = x0  & x1 ;	t07 = x3  ^ t04;	t08 = x2  | t06;	t09 = x1  ^ t07;	t10 = x3  & t05;	t11 = t02 ^ t10;	y3  = t08 ^ t09;	t13 = x3  | y3 ;	t14 = x0  | t07;	t15 = x1  & t13;	y2  = t08 ^ t11;	y0  = t14 ^ t15;	y1  = t05 ^ t04;  x0  = ((((y0))<<(13))| (((y0))>>>(32-(13)))) ;  x2  = ((((y2))<<(3))| (((y2))>>>(32-(3)))) ;  x1  =   y1  ^   x0  ^   x2 ;  x3  =   y3  ^   x2  ^ (x0)<<3;  x1  = ((((x1))<<(1))| (((x1))>>>(32-(1)))) ;  x3  = ((((x3))<<(7))| (((x3))>>>(32-(7)))) ;  x0  =   x0  ^   x1  ^   x3 ;  x2  =   x2  ^   x3  ^ (x1 <<7);  x0  = ((((x0))<<(5))| (((x0))>>>(32-(5)))) ;  x2  = ((((x2))<<(22))| (((x2))>>>(32-(22))))  ;  x0 ^=  K[28*4+0];  x1 ^=  K[28*4+1];  x2 ^=  K[28*4+2];  x3 ^=  K[28*4+3] ;/* S4:   1 15  8  3 12  0 11  6  2  5  4 10  9 14  7 13 *//* depth = 6,7,5,3, Total gates=19 */	t01 = x0  | x1 ;	t02 = x1  | x2 ;	t03 = x0  ^ t02;	t04 = x1  ^ x3 ;	t05 = x3  | t03;	t06 = x3  & t01;	y3  = t03 ^ t06;	t08 = y3  & t04;	t09 = t04 & t05;	t10 = x2  ^ t06;	t11 = x1  & x2 ;	t12 = t04 ^ t08;	t13 = t11 | t03;	t14 = t10 ^ t09;	t15 = x0  & t05;	t16 = t11 | t12;	y2  = t13 ^ t08;	y1  = t15 ^ t16;	y0  =     ~ t14;  x0  = ((((y0))<<(13))| (((y0))>>>(32-(13)))) ;  x2  = ((((y2))<<(3))| (((y2))>>>(32-(3)))) ;  x1  =   y1  ^   x0  ^   x2 ;  x3  =   y3  ^   x2  ^ (x0)<<3;  x1  = ((((x1))<<(1))| (((x1))>>>(32-(1)))) ;  x3  = ((((x3))<<(7))| (((x3))>>>(32-(7)))) ;  x0  =   x0  ^   x1  ^   x3 ;  x2  =   x2  ^   x3  ^ (x1 <<7);  x0  = ((((x0))<<(5))| (((x0))>>>(32-(5)))) ;  x2  = ((((x2))<<(22))| (((x2))>>>(32-(22))))  ;  x0 ^=  K[29*4+0];  x1 ^=  K[29*4+1];  x2 ^=  K[29*4+2];  x3 ^=  K[29*4+3] ;/* S5:  15  5  2 11  4 10  9 12  0  3 14  8 13  6  7  1 *//* depth = 4,6,8,6, Total gates=17 */	t01 = x1  ^ x3 ;	t02 = x1  | x3 ;	t03 = x0  & t01;	t04 = x2  ^ t02;	t05 = t03 ^ t04;	y0  =     ~ t05;	t07 = x0  ^ t01;	t08 = x3  | y0 ;	t09 = x1  | t05;	t10 = x3  ^ t08;	t11 = x1  | t07;	t12 = t03 | y0 ;	t13 = t07 | t10;	t14 = t01 ^ t11;	y2  = t09 ^ t13;	y1  = t07 ^ t08;	y3  = t12 ^ t14;  x0  = ((((y0))<<(13))| (((y0))>>>(32-(13)))) ;  x2  = ((((y2))<<(3))| (((y2))>>>(32-(3)))) ;  x1  =   y1  ^   x0  ^   x2 ;  x3  =   y3  ^   x2  ^ (x0)<<3;  x1  = ((((x1))<<(1))| (((x1))>>>(32-(1)))) ;  x3  = ((((x3))<<(7))| (((x3))>>>(32-(7)))) ;  x0  =   x0  ^   x1  ^   x3 ;  x2  =   x2  ^   x3  ^ (x1 <<7);  x0  = ((((x0))<<(5))| (((x0))>>>(32-(5)))) ;  x2  = ((((x2))<<(22))| (((x2))>>>(32-(22))))  ;  x0 ^=  K[30*4+0];  x1 ^=  K[30*4+1];  x2 ^=  K[30*4+2];  x3 ^=  K[30*4+3] ;/* S6:   7  2 12  5  8  4  6 11 14  9  1 15 13  3 10  0 *//* depth = 8,3,6,3, Total gates=19 */	t01 = x0  & x3 ;	t02 = x1  ^ x2 ;	t03 = x0  ^ x3 ;	t04 = t01 ^ t02;	t05 = x1  | x2 ;	y1  =     ~ t04;	t07 = t03 & t05;	t08 = x1  & y1 ;	t09 = x0  | x2 ;	t10 = t07 ^ t08;	t11 = x1  | x3 ;	t12 = x2  ^ t11;	t13 = t09 ^ t10;	y2  =     ~ t13;	t15 = y1  & t03;	y3  = t12 ^ t07;	t17 = x0  ^ x1 ;	t18 = y2  ^ t15;	y0  = t17 ^ t18;  x0  = ((((y0))<<(13))| (((y0))>>>(32-(13)))) ;  x2  = ((((y2))<<(3))| (((y2))>>>(32-(3)))) ;  x1  =   y1  ^   x0  ^   x2 ;  x3  =   y3  ^   x2  ^ (x0)<<3;  x1  = ((((x1))<<(1))| (((x1))>>>(32-(1)))) ;  x3  = ((((x3))<<(7))| (((x3))>>>(32-(7)))) ;  x0  =   x0  ^   x1  ^   x3 ;  x2  =   x2  ^   x3  ^ (x1 <<7);  x0  = ((((x0))<<(5))| (((x0))>>>(32-(5)))) ;  x2  = ((((x2))<<(22))| (((x2))>>>(32-(22))))  ;  x0 ^=  K[31*4+0];  x1 ^=  K[31*4+1];  x2 ^=  K[31*4+2];  x3 ^=  K[31*4+3] ;/* S7:   1 13 15  0 14  8  2 11  7  4 12 10  9  3  5  6 *//* depth = 10,7,10,4, Total gates=19 */	t01 = x0  & x2 ;	t02 =     ~ x3 ;	t03 = x0  & t02;	t04 = x1  | t01;	t05 = x0  & x1 ;	t06 = x2  ^ t04;	y3  = t03 ^ t06;	t08 = x2  | y3 ;	t09 = x3  | t05;	t10 = x0  ^ t08;	t11 = t04 & y3 ;	y1  = t09 ^ t10;	t13 = x1  ^ y1 ;	t14 = t01 ^ y1 ;	t15 = x2  ^ t05;	t16 = t11 | t13;	t17 = t02 | t14;	y0  = t15 ^ t17;	y2  = x0  ^ t16;  x0 = y0;  x1 = y1;  x2 = y2;  x3 = y3;  x0 ^=  K[32*4+0];  x1 ^=  K[32*4+1];  x2 ^=  K[32*4+2];  x3 ^=  K[32*4+3] ;        byte[] result = new byte[] {            (byte)(x0), (byte)(x0 >>> 8), (byte)(x0 >>> 16), (byte)(x0 >>> 24),            (byte)(x1), (byte)(x1 >>> 8), (byte)(x1 >>> 16), (byte)(x1 >>> 24),            (byte)(x2), (byte)(x2 >>> 8), (byte)(x2 >>> 16), (byte)(x2 >>> 24),            (byte)(x3), (byte)(x3 >>> 8), (byte)(x3 >>> 16), (byte)(x3 >>> 24)        };if (DEBUG && debuglevel > 6) {System.out.println("CT="+toString(result));System.out.println();}if (DEBUG) trace(OUT, "blockEncrypt()");        return result;    }    /**     * Decrypt exactly one block of ciphertext.     *     * @param  in         The ciphertext.     * @param  inOffset   Index of in from which to start considering data.     * @param  sessionKey The session key to use for decryption.     * @return The plaintext generated from a ciphertext using the session key.     */    public static byte[]    blockDecrypt (byte[] in, int inOffset, Object sessionKey) {if (DEBUG) trace(IN, "blockDecrypt("+in+", "+inOffset+", "+sessionKey+")");        int[] K = (int[]) sessionKey;        int x0 = (in[inOffset++] & 0xFF)       |                 (in[inOffset++] & 0xFF) <<  8 |                 (in[inOffset++] & 0xFF) << 16 |                 (in[inOffset++] & 0xFF) << 24;        int x1 = (in[inOffset++] & 0xFF)       |                 (in[inOffset++] & 0xFF) <<  8 |                 (in[inOffset++] & 0xFF) << 16 |                 (in[inOffset++] & 0xFF) << 24;        int x2 = (in[inOffset++] & 0xFF)       |                 (in[inOffset++] & 0xFF) <<  8 |                 (in[inOffset++] & 0xFF) << 16 |                 (in[inOffset++] & 0xFF) << 24;        int x3 = (in[inOffset++] & 0xFF)       |                 (in[inOffset++] & 0xFF) <<  8 |                 (in[inOffset++] & 0xFF) << 16 |                 (in[inOffset++] & 0xFF) << 24;        int z, y0, y1, y2, y3;	int t00, t01, t02, t03, t04, t05, t06, t07, t08, t09, t10;	int t11, t12, t13, t14, t15, t16, t17, t18, t19;   x0 ^=  K[32*4+0];  x1 ^=  K[32*4+1];   x2 ^=  K[32*4+2];  x3 ^=  K[32*4+3] ;/* InvS7:   3  0  6 13  9 14 15  8  5 12 11  7 10  1  4  2 *//* depth = 9,7,3,3, Total gates=18 */	t01 = x0  & x1 ;	t02 = x0  | x1 ;	t03 = x2  | t01;	t04 = x3  & t02;	y3  = t03 ^ t04;	t06 = x1  ^ t04;	t07 = x3  ^ y3 ;	t08 =     ~ t07;	t09 = t06 | t08;	t10 = x1  ^ x3 ;	t11 = x0  | x3 ;	y1  = x0  ^ t09;	t13 = x2  ^ t06;	t14 = x2  & t11;	t15 = x3  | y1 ;	t16 = t01 | t10;	y0  = t13 ^ t15;	y2  = t14 ^ t16;   y0 ^=  K[31*4+0];  y1 ^=  K[31*4+1];   y2 ^=  K[31*4+2];  y3 ^=  K[31*4+3] ;    x2  = ((((   y2  ))<<(32-(  22 )))| (((   y2  ))>>>(  22 ))) ;   x0  = ((((  y0  ))<<(32-(  5 )))| (((  y0  ))>>>(  5 ))) ;   x2  =   x2  ^   y3  ^ (  y1 <<7);   x0  =   x0  ^   y1  ^   y3 ;   x3  = ((((   y3  ))<<(32-(  7 )))| (((   y3  ))>>>(  7 ))) ;   x1  = ((((   y1  ))<<(32-(  1 )))| (((   y1  ))>>>(  1 ))) ;   x3  =   x3  ^   x2  ^ (  x0 )<<3;   x1  =   x1  ^   x0  ^   x2 ;   x2  = ((((   x2  ))<<(32-(  3 )))| (((   x2  ))>>>(  3 ))) ;   x0  = ((((   x0  ))<<(32-(  13 )))| (((   x0  ))>>>(  13 )))  ;/* InvS6:  15 10  1 13  5  3  6  0  4  9 14  7  2 12  8 11 *//* depth = 5,3,8,6, Total gates=19 */	t01 = x0  ^ x2 ;	t02 =     ~ x2 ;	t03 = x1  & t01;	t04 = x1  | t02;	t05 = x3  | t03;	t06 = x1  ^ x3 ;	t07 = x0  & t04;	t08 = x0  | t02;	t09 = t07 ^ t05;	y1  = t06 ^ t08;	y0  =     ~ t09;	t12 = x1  & y0 ;	t13 = t01 & t05;	t14 = t01 ^ t12;	t15 = t07 ^ t13;	t16 = x3  | t02;	t17 = x0  ^ y1 ;	y3  = t17 ^ t15;	y2  = t16 ^ t14;   y0 ^=  K[30*4+0];  y1 ^=  K[30*4+1];   y2 ^=  K[30*4+2];  y3 ^=  K[30*4+3] ;    x2  = ((((   y2  ))<<(32-(  22 )))| (((   y2  ))>>>(  22 ))) ;   x0  = ((((  y0  ))<<(32-(  5 )))| (((  y0  ))>>>(  5 ))) ;   x2  =   x2  ^   y3  ^ (  y1 <<7);   x0  =   x0  ^   y1  ^   y3 ;   x3  = ((((   y3  ))<<(32-(  7 )))| (((   y3  ))>>>(  7 ))) ;   x1  = ((((   y1  ))<<(32-(  1 )))| (((   y1  ))>>>(  1 ))) ;   x3  =   x3  ^   x2  ^ (  x0 )<<3;   x1  =   x1  ^   x0  ^   x2 ;   x2  = ((((   x2  ))<<(32-(  3 )))| (((   x2  ))>>>(  3 ))) ;   x0  = ((((   x0  ))<<(32-(  13 )))| (((   x0  ))>>>(  13 )))  ;/* InvS5:   8 15  2  9  4  1 13 14 11  6  5  3  7 12 10  0 *//* depth = 4,6,9,7, Total gates=17 */	t01 = x0  & x3 ;	t02 = x2  ^ t01;	t03 = x0  ^ x3 ;	t04 = x1  & t02;	t05 = x0  & x2 ;	y0  = t03 ^ t04;	t07 = x0  & y0 ;	t08 = t01 ^ y0 ;	t09 = x1  | t05;	t10 =     ~ x1 ;	y1  = t08 ^ t09;	t12 = t10 | t07;	t13 = y0  | y1 ;	y3  = t02 ^ t12;	t15 = t02 ^ t13;	t16 = x1  ^ x3 ;	y2  = t16 ^ t15;   y0 ^=  K[29*4+0];  y1 ^=  K[29*4+1];   y2 ^=  K[29*4+2];  y3 ^=  K[29*4+3] ;    x2  = ((((   y2  ))<<(32-(  22 )))| (((   y2  ))>>>(  22 ))) ;   x0  = ((((  y0  ))<<(32-(  5 )))| (((  y0  ))>>>(  5 ))) ;   x2  =   x2  ^   y3  ^ (  y1 <<7);   x0  =   x0  ^   y1  ^   y3 ;   x3  = ((((   y3  ))<<(32-(  7 )))| (((   y3  ))>>>(  7 ))) ;   x1  = ((((   y1  ))<<(32-(  1 )))| (((   y1  ))>>>(  1 ))) ;   x3  =   x3  ^   x2  ^ (  x0 )<<3;   x1  =   x1  ^   x0  ^   x2 ;   x2  = ((((   x2  ))<<(32-(  3 )))| (((   x2  ))>>>(  3 ))) ;   x0  = ((((   x0  ))<<(32-(  13 )))| (((   x0  ))>>>(  13 )))  ;/* InvS4:   5  0  8  3 10  9  7 14  2 12 11  6  4 15 13  1 *//* depth = 6,4,7,3, Total gates=17 */	t01 = x1  | x3 ;	t02 = x2  | x3 ;	t03 = x0  & t01;	t04 = x1  ^ t02;	t05 = x2  ^ x3 ;	t06 =     ~ t03;	t07 = x0  & t04;	y1  = t05 ^ t07;	t09 = y1  | t06;	t10 = x0  ^ t07;	t11 = t01 ^ t09;	t12 = x3  ^ t04;	t13 = x2  | t10;	y3  = t03 ^ t12;	t15 = x0  ^ t04;	y2  = t11 ^ t13;	y0  = t15 ^ t09;   y0 ^=  K[28*4+0];  y1 ^=  K[28*4+1];   y2 ^=  K[28*4+2];  y3 ^=  K[28*4+3] ;    x2  = ((((   y2  ))<<(32-(  22 )))| (((   y2  ))>>>(  22 ))) ;   x0  = ((((  y0  ))<<(32-(  5 )))| (((  y0  ))>>>(  5 ))) ;   x2  =   x2  ^   y3  ^ (  y1 <<7);   x0  =   x0  ^   y1  ^   y3 ;   x3  = ((((   y3  ))<<(32-(  7 )))| (((   y3  ))>>>(  7 ))) ;   x1  = ((((   y1  ))<<(32-(  1 )))| (((   y1  ))>>>(  1 ))) ;   x3  =   x3  ^   x2  ^ (  x0 )<<3;   x1  =   x1  ^   x0  ^   x2 ;   x2  = ((((   x2  ))<<(32-(  3 )))| (((   x2  ))>>>(  3 ))) ;   x0  = ((((   x0  ))<<(32-(  13 )))| (((   x0  ))>>>(  13 )))  ;/* InvS3:   0  9 10  7 11 14  6 13  3  5 12  2  4  8 15  1 *//* depth = 3,6,4,4, Total gates=17 */	t01 = x2  | x3 ;	t02 = x0  | x3 ;	t03 = x2  ^ t02;	t04 = x1  ^ t02;	t05 = x0  ^ x3 ;	t06 = t04 & t03;	t07 = x1  & t01;	y2  = t05 ^ t06;	t09 = x0  ^ t03;	y0  = t07 ^ t03;	t11 = y0  | t05;	t12 = t09 & t11;	t13 = x0  & y2 ;	t14 = t01 ^ t05;	y1  = x1  ^ t12;	t16 = x1  | t13;	y3  = t14 ^ t16;   y0 ^=  K[27*4+0];  y1 ^=  K[27*4+1];   y2 ^=  K[27*4+2];  y3 ^=  K[27*4+3] ;    x2  = ((((   y2  ))<<(32-(  22 )))| (((   y2  ))>>>(  22 ))) ;   x0  = ((((  y0  ))<<(32-(  5 )))| (((  y0  ))>>>(  5 ))) ;   x2  =   x2  ^   y3  ^ (  y1 <<7);   x0  =   x0  ^   y1  ^   y3 ;   x3  = ((((   y3  ))<<(32-(  7 )))| (((   y3  ))>>>(  7 ))) ;   x1  = ((((   y1  ))<<(32-(  1 )))| (((   y1  ))>>>(  1 ))) ;   x3  =   x3  ^   x2  ^ (  x0 )<<3;   x1  =   x1  ^   x0  ^   x2 ;   x2  = ((((   x2  ))<<(32-(  3 )))| (((   x2  ))>>>(  3 ))) ;   x0  = ((((   x0  ))<<(32-(  13 )))| (((   x0  ))>>>(  13 )))  ;/* InvS2:  12  9 15  4 11 14  1  2  0  3  6 13  5  8 10  7 *//* depth = 3,6,8,3, Total gates=18 */	t01 = x0  ^ x3 ;	t02 = x2  ^ x3 ;	t03 = x0  & x2 ;	t04 = x1  | t02;	y0  = t01 ^ t04;	t06 = x0  | x2 ;	t07 = x3  | y0 ;	t08 =     ~ x3 ;	t09 = x1  & t06;	t10 = t08 | t03;	t11 = x1  & t07;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -