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

📄 cast5.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                                   0x91DA55F4, 0x40A230F3, 0xD1988F35,                                   0xB6E318D2, 0x3FFA50BC, 0x3D40F021,                                   0xC3C0BDAE, 0x4958C24C, 0x518F36B2,                                   0x84B1D370, 0x0FEDCE83, 0x878DDADA,                                   0xF2A279C7, 0x94E01BE8, 0x90716F4B,                                   0x954B8AA3 };  private static final int[] S8 = { 0xE216300D, 0xBBDDFFFC, 0xA7EBDABD,                                   0x35648095, 0x7789F8B7, 0xE6C1121B,                                   0x0E241600, 0x052CE8B5, 0x11A9CFB0,                                   0xE5952F11, 0xECE7990A, 0x9386D174,                                   0x2A42931C, 0x76E38111, 0xB12DEF3A,                                   0x37DDDDFC, 0xDE9ADEB1, 0x0A0CC32C,                                   0xBE197029, 0x84A00940, 0xBB243A0F,                                   0xB4D137CF, 0xB44E79F0, 0x049EEDFD,                                   0x0B15A15D, 0x480D3168, 0x8BBBDE5A,                                   0x669DED42, 0xC7ECE831, 0x3F8F95E7,                                   0x72DF191B, 0x7580330D, 0x94074251,                                   0x5C7DCDFA, 0xABBE6D63, 0xAA402164,                                   0xB301D40A, 0x02E7D1CA, 0x53571DAE,                                   0x7A3182A2, 0x12A8DDEC, 0xFDAA335D,                                   0x176F43E8, 0x71FB46D4, 0x38129022,                                   0xCE949AD4, 0xB84769AD, 0x965BD862,                                   0x82F3D055, 0x66FB9767, 0x15B80B4E,                                   0x1D5B47A0, 0x4CFDE06F, 0xC28EC4B8,                                   0x57E8726E, 0x647A78FC, 0x99865D44,                                   0x608BD593, 0x6C200E03, 0x39DC5FF6,                                   0x5D0B00A3, 0xAE63AFF2, 0x7E8BD632,                                   0x70108C0C, 0xBBD35049, 0x2998DF04,                                   0x980CF42A, 0x9B6DF491, 0x9E7EDD53,                                   0x06918548, 0x58CB7E07, 0x3B74EF2E,                                   0x522FFFB1, 0xD24708CC, 0x1C7E27CD,                                   0xA4EB215B, 0x3CF1D2E2, 0x19B47A38,                                   0x424F7618, 0x35856039, 0x9D17DEE7,                                   0x27EB35E6, 0xC9AFF67B, 0x36BAF5B8,                                   0x09C467CD, 0xC18910B1, 0xE11DBF7B,                                   0x06CD1AF8, 0x7170C608, 0x2D5E3354,                                   0xD4DE495A, 0x64C6D006, 0xBCC0C62C,                                   0x3DD00DB3, 0x708F8F34, 0x77D51B42,                                   0x264F620F, 0x24B8D2BF, 0x15C1B79E,                                   0x46A52564, 0xF8D7E54E, 0x3E378160,                                   0x7895CDA5, 0x859C15A5, 0xE6459788,                                   0xC37BC75F, 0xDB07BA0C, 0x0676A3AB,                                   0x7F229B1E, 0x31842E7B, 0x24259FD7,                                   0xF8BEF472, 0x835FFCB8, 0x6DF4C1F2,                                   0x96F5B195, 0xFD0AF0FC, 0xB0FE134C,                                   0xE2506D3D, 0x4F9B12EA, 0xF215F225,                                   0xA223736F, 0x9FB4C428, 0x25D04979,                                   0x34C713F8, 0xC4618187, 0xEA7A6E98,                                   0x7CD16EFC, 0x1436876C, 0xF1544107,                                   0xBEDEEE14, 0x56E9AF27, 0xA04AA441,                                   0x3CF7C899, 0x92ECBAE6, 0xDD67016D,                                   0x151682EB, 0xA842EEDF, 0xFDBA60B4,                                   0xF1907B75, 0x20E3030F, 0x24D8C29E,                                   0xE139673B, 0xEFA63FB8, 0x71873054,                                   0xB6F2CF3B, 0x9F326442, 0xCB15A4CC,                                   0xB01A4504, 0xF1E47D8D, 0x844A1BE5,                                   0xBAE7DFDC, 0x42CBDA70, 0xCD7DAE0A,                                   0x57E85B7A, 0xD53F5AF6, 0x20CF4D8C,                                   0xCEA4D428, 0x79D130A4, 0x3486EBFB,                                   0x33D3CDDC, 0x77853B53, 0x37EFFCB5,                                   0xC5068778, 0xE580B3E6, 0x4E68B8F4,                                   0xC5C8B37E, 0x0D809EA2, 0x398FEB7C,                                   0x132A4F94, 0x43B7950E, 0x2FEE7D1C,                                   0x223613BD, 0xDD06CAA2, 0x37DF932B,                                   0xC4248289, 0xACF3EBC3, 0x5715F6B7,                                   0xEF3478DD, 0xF267616F, 0xC148CBE4,                                   0x9052815E, 0x5E410FAB, 0xB48A2465,                                   0x2EDA7FA4, 0xE87B40E4, 0xE98EA084,                                   0x5889E9E1, 0xEFD390FC, 0xDD07D35B,                                   0xDB485694, 0x38D7E5B2, 0x57720101,                                   0x730EDEBC, 0x5B643113, 0x94917E4F,                                   0x503C2FBA, 0x646F1282, 0x7523D24A,                                   0xE0779695, 0xF9C17A8F, 0x7A5B2121,                                   0xD187B896, 0x29263A4D, 0xBA510CDF,                                   0x81F47C9F, 0xAD1163ED, 0xEA7B5965,                                   0x1A00726E, 0x11403092, 0x00DA6D77,                                   0x4A0CDD61, 0xAD1F4603, 0x605BDFB0,                                   0x9EEDC364, 0x22EBE6A8, 0xCEE7D28A,                                   0xA0E736A0, 0x5564A6B9, 0x10853209,                                   0xC7EB8F37, 0x2DE705CA, 0x8951570F,                                   0xDF09822B, 0xBD691A6C, 0xAA12E4F2,                                   0x87451C0F, 0xE0F6A27A, 0x3ADA4819,                                   0x4CF1764F, 0x0D771C2B, 0x67CDB156,                                   0x350D8384, 0x5938FA0F, 0x42399EF3,                                   0x36997B07, 0x0E84093D, 0x4AA93E61,                                   0x8360D87B, 0x1FA98B0C, 0x1149382C,                                   0xE97625A5, 0x0614D1B7, 0x0E25244B,                                   0x0C768347, 0x589E8D82, 0x0D2059D1,                                   0xA466BB1E, 0xF8DA0A82, 0x04F19130,                                   0xBA6E4EC0, 0x99265164, 0x1EE7230D,                                   0x50B2AD80, 0xEAEE6801, 0x8DB2A283,                                   0xEA8BF59E };  private static final int _12_ROUNDS = 12;  private static final int _16_ROUNDS = 16;  // Constructor(s)  // -------------------------------------------------------------------------  /** Trivial 0-arguments constructor. */  public Cast5()  {    super(Registry.CAST5_CIPHER, DEFAULT_BLOCK_SIZE, DEFAULT_KEY_SIZE);  }  // Class methods  // -------------------------------------------------------------------------  /**   * Assuming the input is a 32-bit block organised as: b31b30b29...b0, this   * method returns an array of 4 Java ints, containing from position 0 onward   * the values: {b31b30b29b28, b27b26b25b24, ... , b3b2b1b0}.   *   * @param x a 32-bit block.   * @return an array of 4 ints, each being the contents of an 8-bit block from   * the input.   */  private static final int[] unscramble(int x)  {    return new int[] { x >>> 24, (x >>> 16) & 0xFF, (x >>> 8) & 0xFF, x & 0xFF };  }  // Instance methods  // -------------------------------------------------------------------------  // java.lang.Cloneable interface implementation ----------------------------  public Object clone()  {    Cast5 result = new Cast5();    result.currentBlockSize = this.currentBlockSize;    return result;  }  // IBlockCipherSpi interface implementation --------------------------------  public Iterator blockSizes()  {    ArrayList al = new ArrayList();    al.add(new Integer(DEFAULT_BLOCK_SIZE));    return Collections.unmodifiableList(al).iterator();  }  public Iterator keySizes()  {    ArrayList al = new ArrayList();    for (int n = 5; n < 17; n++)      {        al.add(new Integer(n));      }    return Collections.unmodifiableList(al).iterator();  }  public Object makeKey(byte[] uk, int bs) throws InvalidKeyException  {    if (bs != DEFAULT_BLOCK_SIZE)      {        throw new IllegalArgumentException();      }    if (uk == null)      {        throw new InvalidKeyException("Empty key");      }    int len = uk.length;    if (len < 5 || len > 16)      {        throw new InvalidKeyException(                                      "Key size (in bytes) is not in the range [5..16]");      }    Cast5Key result = new Cast5Key();    result.rounds = (len < 11) ? _12_ROUNDS : _16_ROUNDS;    byte[] kk = new byte[16];    System.arraycopy(uk, 0, kk, 0, len);    int z0z1z2z3, z4z5z6z7, z8z9zAzB, zCzDzEzF;    int z0, z1, z2, z3, z4, z5, z6, z7, z8, z9, zA, zB, zC, zD, zE, zF;    int x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, xA, xB, xC, xD, xE, xF;    int[] b;    int x0x1x2x3 = kk[0] << 24 | (kk[1] & 0xFF) << 16 | (kk[2] & 0xFF) << 8                   | (kk[3] & 0xFF);    int x4x5x6x7 = kk[4] << 24 | (kk[5] & 0xFF) << 16 | (kk[6] & 0xFF) << 8                   | (kk[7] & 0xFF);    int x8x9xAxB = kk[8] << 24 | (kk[9] & 0xFF) << 16 | (kk[10] & 0xFF) << 8                   | (kk[11] & 0xFF);    int xCxDxExF = kk[12] << 24 | (kk[13] & 0xFF) << 16 | (kk[14] & 0xFF) << 8                   | (kk[15] & 0xFF);    b = unscramble(x0x1x2x3);    x0 = b[0];    x1 = b[1];    x2 = b[2];    x3 = b[3];    b = unscramble(x4x5x6x7);    x4 = b[0];    x5 = b[1];    x6 = b[2];    x7 = b[3];    b = unscramble(x8x9xAxB);    x8 = b[0];    x9 = b[1];    xA = b[2];    xB = b[3];    b = unscramble(xCxDxExF);    xC = b[0];    xD = b[1];    xE = b[2];    xF = b[3];    z0z1z2z3 = x0x1x2x3 ^ S5[xD] ^ S6[xF] ^ S7[xC] ^ S8[xE] ^ S7[x8];    b = unscramble(z0z1z2z3);    z0 = b[0];    z1 = b[1];    z2 = b[2];    z3 = b[3];    z4z5z6z7 = x8x9xAxB ^ S5[z0] ^ S6[z2] ^ S7[z1] ^ S8[z3] ^ S8[xA];    b = unscramble(z4z5z6z7);    z4 = b[0];    z5 = b[1];    z6 = b[2];    z7 = b[3];    z8z9zAzB = xCxDxExF ^ S5[z7] ^ S6[z6] ^ S7[z5] ^ S8[z4] ^ S5[x9];    b = unscramble(z8z9zAzB);    z8 = b[0];    z9 = b[1];    zA = b[2];    zB = b[3];    zCzDzEzF = x4x5x6x7 ^ S5[zA] ^ S6[z9] ^ S7[zB] ^ S8[z8] ^ S6[xB];    b = unscramble(zCzDzEzF);    zC = b[0];    zD = b[1];    zE = b[2];    zF = b[3];    result.Km0 = S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2];    result.Km1 = S5[zA] ^ S6[zB] ^ S7[z5] ^ S8[z4] ^ S6[z6];

⌨️ 快捷键说明

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