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

📄 cast5.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    result.Km2 = S5[zC] ^ S6[zD] ^ S7[z3] ^ S8[z2] ^ S7[z9];    result.Km3 = S5[zE] ^ S6[zF] ^ S7[z1] ^ S8[z0] ^ S8[zC];    x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0];    b = unscramble(x0x1x2x3);    x0 = b[0];    x1 = b[1];    x2 = b[2];    x3 = b[3];    x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2];    b = unscramble(x4x5x6x7);    x4 = b[0];    x5 = b[1];    x6 = b[2];    x7 = b[3];    x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1];    b = unscramble(x8x9xAxB);    x8 = b[0];    x9 = b[1];    xA = b[2];    xB = b[3];    xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3];    b = unscramble(xCxDxExF);    xC = b[0];    xD = b[1];    xE = b[2];    xF = b[3];    result.Km4 = S5[x3] ^ S6[x2] ^ S7[xC] ^ S8[xD] ^ S5[x8];    result.Km5 = S5[x1] ^ S6[x0] ^ S7[xE] ^ S8[xF] ^ S6[xD];    result.Km6 = S5[x7] ^ S6[x6] ^ S7[x8] ^ S8[x9] ^ S7[x3];    result.Km7 = S5[x5] ^ S6[x4] ^ S7[xA] ^ S8[xB] ^ S8[x7];    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.Km8 = S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9];    result.Km9 = S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC];    result.Km10 = S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2];    result.Km11 = S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6];    x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0];    b = unscramble(x0x1x2x3);    x0 = b[0];    x1 = b[1];    x2 = b[2];    x3 = b[3];    x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2];    b = unscramble(x4x5x6x7);    x4 = b[0];    x5 = b[1];    x6 = b[2];    x7 = b[3];    x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1];    b = unscramble(x8x9xAxB);    x8 = b[0];    x9 = b[1];    xA = b[2];    xB = b[3];    xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3];    b = unscramble(xCxDxExF);    xC = b[0];    xD = b[1];    xE = b[2];    xF = b[3];    result.Km12 = S5[x8] ^ S6[x9] ^ S7[x7] ^ S8[x6] ^ S5[x3];    result.Km13 = S5[xA] ^ S6[xB] ^ S7[x5] ^ S8[x4] ^ S6[x7];    result.Km14 = S5[xC] ^ S6[xD] ^ S7[x3] ^ S8[x2] ^ S7[x8];    result.Km15 = S5[xE] ^ S6[xF] ^ S7[x1] ^ S8[x0] ^ S8[xD];    // The remaining half is identical to what is given above, carrying on    // from the last created x0..xF to generate keys K17 - K32. These keys    // will be used as the 'rotation' keys and as such only the five least    // significant bits are to be considered.    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.Kr0 = (S5[z8] ^ S6[z9] ^ S7[z7] ^ S8[z6] ^ S5[z2]) & 0x1F;    result.Kr1 = (S5[zA] ^ S6[zB] ^ S7[z5] ^ S8[z4] ^ S6[z6]) & 0x1F;    result.Kr2 = (S5[zC] ^ S6[zD] ^ S7[z3] ^ S8[z2] ^ S7[z9]) & 0x1F;    result.Kr3 = (S5[zE] ^ S6[zF] ^ S7[z1] ^ S8[z0] ^ S8[zC]) & 0x1F;    x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0];    b = unscramble(x0x1x2x3);    x0 = b[0];    x1 = b[1];    x2 = b[2];    x3 = b[3];    x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2];    b = unscramble(x4x5x6x7);    x4 = b[0];    x5 = b[1];    x6 = b[2];    x7 = b[3];    x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1];    b = unscramble(x8x9xAxB);    x8 = b[0];    x9 = b[1];    xA = b[2];    xB = b[3];    xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3];    b = unscramble(xCxDxExF);    xC = b[0];    xD = b[1];    xE = b[2];    xF = b[3];    result.Kr4 = (S5[x3] ^ S6[x2] ^ S7[xC] ^ S8[xD] ^ S5[x8]) & 0x1F;    result.Kr5 = (S5[x1] ^ S6[x0] ^ S7[xE] ^ S8[xF] ^ S6[xD]) & 0x1F;    result.Kr6 = (S5[x7] ^ S6[x6] ^ S7[x8] ^ S8[x9] ^ S7[x3]) & 0x1F;    result.Kr7 = (S5[x5] ^ S6[x4] ^ S7[xA] ^ S8[xB] ^ S8[x7]) & 0x1F;    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.Kr8 = (S5[z3] ^ S6[z2] ^ S7[zC] ^ S8[zD] ^ S5[z9]) & 0x1F;    result.Kr9 = (S5[z1] ^ S6[z0] ^ S7[zE] ^ S8[zF] ^ S6[zC]) & 0x1F;    result.Kr10 = (S5[z7] ^ S6[z6] ^ S7[z8] ^ S8[z9] ^ S7[z2]) & 0x1F;    result.Kr11 = (S5[z5] ^ S6[z4] ^ S7[zA] ^ S8[zB] ^ S8[z6]) & 0x1F;    x0x1x2x3 = z8z9zAzB ^ S5[z5] ^ S6[z7] ^ S7[z4] ^ S8[z6] ^ S7[z0];    b = unscramble(x0x1x2x3);    x0 = b[0];    x1 = b[1];    x2 = b[2];    x3 = b[3];    x4x5x6x7 = z0z1z2z3 ^ S5[x0] ^ S6[x2] ^ S7[x1] ^ S8[x3] ^ S8[z2];    b = unscramble(x4x5x6x7);    x4 = b[0];    x5 = b[1];    x6 = b[2];    x7 = b[3];    x8x9xAxB = z4z5z6z7 ^ S5[x7] ^ S6[x6] ^ S7[x5] ^ S8[x4] ^ S5[z1];    b = unscramble(x8x9xAxB);    x8 = b[0];    x9 = b[1];    xA = b[2];    xB = b[3];    xCxDxExF = zCzDzEzF ^ S5[xA] ^ S6[x9] ^ S7[xB] ^ S8[x8] ^ S6[z3];    b = unscramble(xCxDxExF);    xC = b[0];    xD = b[1];    xE = b[2];    xF = b[3];    result.Kr12 = (S5[x8] ^ S6[x9] ^ S7[x7] ^ S8[x6] ^ S5[x3]) & 0x1F;    result.Kr13 = (S5[xA] ^ S6[xB] ^ S7[x5] ^ S8[x4] ^ S6[x7]) & 0x1F;    result.Kr14 = (S5[xC] ^ S6[xD] ^ S7[x3] ^ S8[x2] ^ S7[x8]) & 0x1F;    result.Kr15 = (S5[xE] ^ S6[xF] ^ S7[x1] ^ S8[x0] ^ S8[xD]) & 0x1F;    return result;  }  /**   * <p>The full encryption algorithm is given in the following four steps.</p>   *   * <pre>   *    INPUT:  plaintext m1...m64; key K = k1...k128.   *    OUTPUT: ciphertext c1...c64.   * </pre>   *   * <ol>   *   <li>(key schedule) Compute 16 pairs of subkeys {Kmi, Kri} from a user   *    key (see makeKey() method).</li>   *   <li>(L0,R0) <-- (m1...m64).  (Split the plaintext into left and right   *    32-bit halves L0 = m1...m32 and R0 = m33...m64.).</li>   *   <li>(16 rounds) for i from 1 to 16, compute Li and Ri as follows:   *     <ul>   *       <li>Li = Ri-1;</li>   *       <li>Ri = Li-1 ^ F(Ri-1,Kmi,Kri), where F is defined in method F() --   *       f is of Type 1, Type 2, or Type

⌨️ 快捷键说明

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