Avatar
Člen
Člen
Avatar
Člen:

Ahojte :)
Mám kód:

private boolean b(String paramString)
  {
    if (this.jdField_a_of_type_JavaLangString.length() != 23)
      return false;
    String str = paramString.substring(0, 5);
    str = str + paramString.substring(6, 11);
    str = str + paramString.substring(12, 17);
    int i = Integer.parseInt((paramString = str += paramString.substring(18, 23)).substring(0, 3));
    int j = Integer.parseInt(paramString.substring(3, 6));
    int k = Integer.parseInt(paramString.substring(6, 9));
    int m = Integer.parseInt(paramString.substring(9, 12));
    int n = Integer.parseInt(paramString.substring(12, 15));
    Integer.parseInt(paramString.substring(15, 17));
    int i1 = Integer.parseInt(paramString.substring(17, 20));
    int i2 = 0;
    i2 = (i2 = (i2 = (i2 = (i2 = 0x23 ^ i) ^ j) ^ k) ^ m) ^ n;
    i2 += 381;
    return i2 %= 1000 == i1;

A potrebujem zistiť hodnotu kedy sa bude výraz

i2 = (i2 = (i2 = (i2 = (i2 = 0x23 ^ i) ^ j) ^ k) ^ m) ^ n;
    i2 += 381;
    return i2 %= 1000 == i1;

rovnať hodnote i1 (kedy bude návrat TRUE)
Ďakujem za pomoc :)

Odpovědět 3.12.2014 9:39
...
Avatar
Odpovídá na Člen
Ondřej Štorc:

Nevim co přesně chceš, ale jestli myslíš ten return tak by to mělo vypadat spíš takto:

return (i2 % 1000) == i1
Editováno 3.12.2014 9:47
Nahoru Odpovědět 3.12.2014 9:47
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Člen
Člen
Avatar
Odpovídá na Ondřej Štorc
Člen:

Pridávam pseudokód:

str = paramString.substring(0, 21);
int i = parseInt(str.substring(0, 3));
int j = parseInt(str.substring(3, 6));
int k = parseInt(str.substring(6, 9));
int m = parseInt(str.substring(9, 12))
int n = parseInt(str.substring(12, 15));
if (!IsInteger(str.substring(15, 17)))
throw new Exception("");
int i1 = parseInt(str.substring(17, 20));
int i2 = (((((35 ^ i) ^ j) ^ k) ^ m) ^ n) + 381;
i2 = i2 % 1000
if (i2 == i1)
return 1;
return 0;

i až n sú 3miestne inty, dôležité sú čísla 14 (prvých 14 čísel) a posledné 3 (čísla 17. až 19.)
Porovnáva sa, či je zvyšok výrazu

(35 (umocnené postupne až po n) + 381)

po vydelení 1000 rovnaký ako hodnota v i1 (vracia sa true alebo false)

Editováno 3.12.2014 10:15
Nahoru Odpovědět 3.12.2014 10:15
...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.