Тин, не поделишься формированием пакета RequestAuthLogin, а то немного запутался в нём...
Добавлено через 53 минуты
не совсем понял как его шифровать, как перегнать в аски формат логин и пароль, в общем этот пакет я так и не понял вообще
Добавлено через 2 часа 46 минут
в общем я застрял на этапе РСА шифрования логина и пароля, поделитесь под яву, плиз, а то всё какой то бред получается... в итоге не могу отправить этот пакет
Добавлено через 1 час 19 минут
мой рса кодер почему то выдаёт такую хрень:
02-28 00:19:20.517: E/AndroidRuntime(1654): java.lang.ArithmeticException: BigInteger: modulus not positive
Ошибка вот тут: r = d.modPow(exp, m);
Я так понимаю что это из-за того что m становится 0 или меньше 0... но
Вот мой рсаэнкодер и репейр кей (я так понимаю это и есть унскрамблер):
JAVA Код:
public static byte[] RepairKey
(byte[] key
)
{
byte[] k =
new byte[
128];
int i;
byte temp;
if (key.
length !=
128) return null;
System.
arraycopy(key,
0, k,
0,
128);
for (i =
0; i < 0x40; i++
)
k[0x40 + i] =
(byte)(k[0x40 + i] ^ k[i]
);
for (i =
0; i <
4; i++
)
k[0x0d + i] =
(byte)(k[0x0d + i] ^ k[0x34 + i]
);
for (i =
0; i < 0x40; i++
)
k[i] =
(byte)(k[i] ^ k[0x40 + i]
);
for (i =
0; i <
4; i++
)
{
temp = k[0x00 + i];
k[0x00 + i] = k[0x4d + i];
k[0x4d + i] = temp;
}
return k;
}
public static byte[] RSAEncrypt
(String a,
String p, byte[] rsakey
)
{
String sD;
byte[] sD_temp, sM_temp;
int len;
BigInteger m, exp, d, r;
while (a.
length() <
14) a = a +
(byte)0x00;
while (p.
length() <
16) p = p +
(byte)0x00;
sD = a + p +
(byte)0x00 +
(byte)0x00 +
(byte)0x00 +
(byte)0x00;
System.
out.
println(sD
);
sM_temp = rsakey;
sD_temp =
new byte[
37];
sD_temp[
0] = 0x24;
System.
arraycopy(sD.
getBytes(),
0, sD_temp,
3,
34);
len = sD_temp.
length;
d =
new BigInteger(sD_temp
);
m =
new BigInteger(sM_temp
);
exp =
BigInteger.
valueOf(65537);
r = d.
modPow(exp, m
);
byte [] sR =
new byte[
128];
System.
arraycopy(r.
toByteArray(),
0, sR,
0, r.
toByteArray().
length);
return sR;
}