MCPcopy Index your code
hub / github.com/SeanDragon/protools / CF

Method CF

security/src/main/java/pro/tools/security/sm/SM3.java:109–155  ·  view source on GitHub ↗
(byte[] vi, byte[] bi)

Source from the content-addressed store, hash-verified

107 }
108
109 private static byte[] CF(byte[] vi, byte[] bi) throws IOException {
110 int a, b, c, d, e, f, g, h;
111 a = toInteger(vi, 0);
112 b = toInteger(vi, 1);
113 c = toInteger(vi, 2);
114 d = toInteger(vi, 3);
115 e = toInteger(vi, 4);
116 f = toInteger(vi, 5);
117 g = toInteger(vi, 6);
118 h = toInteger(vi, 7);
119
120 int[] w = new int[68];
121 int[] w1 = new int[64];
122 for (int i = 0; i < 16; i++) {
123 w[i] = toInteger(bi, i);
124 }
125 for (int j = 16; j < 68; j++) {
126 w[j] = P1(w[j - 16] ^ w[j - 9] ^ Integer.rotateLeft(w[j - 3], 15))
127 ^ Integer.rotateLeft(w[j - 13], 7) ^ w[j - 6];
128 }
129 for (int j = 0; j < 64; j++) {
130 w1[j] = w[j] ^ w[j + 4];
131 }
132 int ss1, ss2, tt1, tt2;
133 for (int j = 0; j < 64; j++) {
134 ss1 = Integer
135 .rotateLeft(
136 Integer.rotateLeft(a, 12) + e
137 + Integer.rotateLeft(T(j), j), 7);
138 ss2 = ss1 ^ Integer.rotateLeft(a, 12);
139 tt1 = FF(a, b, c, j) + d + ss2 + w1[j];
140 tt2 = GG(e, f, g, j) + h + ss1 + w[j];
141 d = c;
142 c = Integer.rotateLeft(b, 9);
143 b = a;
144 a = tt1;
145 h = g;
146 g = Integer.rotateLeft(f, 19);
147 f = e;
148 e = P0(tt2);
149 }
150 byte[] v = toByteArray(a, b, c, d, e, f, g, h);
151 for (int i = 0; i < v.length; i++) {
152 v[i] = (byte) (v[i] ^ vi[i]);
153 }
154 return v;
155 }
156
157 private static int toInteger(byte[] source, int index) {
158 StringBuilder valueStr = new StringBuilder();

Callers 1

hashMethod · 0.95

Calls 7

toIntegerMethod · 0.95
P1Method · 0.95
TMethod · 0.95
FFMethod · 0.95
GGMethod · 0.95
P0Method · 0.95
toByteArrayMethod · 0.95

Tested by

no test coverage detected