uds-tool/src/main/java/com/rusefi/uds/KeyCalculator.java

32 lines
845 B
Java
Raw Normal View History

2023-06-02 21:49:31 -07:00
package com.rusefi.uds;
public class KeyCalculator {
2023-06-02 22:30:48 -07:00
private static final int MAIN_APP_SECRET = 0x57649392;
2023-06-02 21:49:31 -07:00
private static final int BOOTLOADER_SECRET = 0xB24F5249;
2023-06-02 22:30:48 -07:00
public static int udsBootloaderSecurityCalcKey(int seed, int rnd) {
return udsSecurityCalcKey(BOOTLOADER_SECRET, seed, rnd);
}
public static int udsMainAppSecurityCalcKey(int seed, int rnd) {
return udsSecurityCalcKey(MAIN_APP_SECRET, seed, rnd);
}
private static int udsSecurityCalcKey(int secret, int seed, int rnd) {
2023-06-02 21:49:31 -07:00
if (rnd < 220) {
rnd += 35;
} else {
rnd = 255;
}
for (int i = 0; i < rnd; i++) {
if (seed < 0) {
2023-06-02 22:30:48 -07:00
seed = secret ^ seed << 1;
2023-06-02 21:49:31 -07:00
} else {
seed <<= 1;
}
}
return seed;
}
}