-
Notifications
You must be signed in to change notification settings - Fork 0
/
hash_it_out_3.java
46 lines (36 loc) · 1.05 KB
/
hash_it_out_3.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package hash_it_out_3;
public class Answer {
public static int[] answer(int[] digest) {
int[] ansArr = new int[digest.length];
int imo;
int xord = 0;
/*
* This is the algorithm to get the digest, but we need to get the
* inverse... for(int i = 0; i < digest.length; i++){
*
* if (i == 0){ imo = 0; } else imo = digest[i-1];
*
* ansArr[i] = ((129*digest[i])^imo)%256;
*
*
* }
*/
// If this is the first element, set XOR value to 0,
// otherwise, set to previous element
for (int i = 0; i < digest.length; i++) {
if (i == 0)
imo = 0;
else
imo = ansArr[i - 1];
// Get the XOR. Inverse of XOR is XOR ;)
xord = digest[i] ^ imo;
// I thought about this as a looping numberline from 0 - 255. To get
// the inverse mod,
// we loop every 129 digits through the numberline until we reach 0.
// The number of loops is the input value
// I XOR'd first to make this easier.
ansArr[i] = (((xord * 129) % 256) + 256) % 256;
}
return ansArr;
}
}