Цитата:
Сообщение от xkor
не надо его никуда переворачивать, первый байт - старший байт
|
Вроде получилось, не крешится криптование... Осталось одно НО... у меня каждый раз получается разных 128 байт, несмотря на то что сервер мне отдает один и тот же публичный РСА ключ... Это нормально ?
Стабильный код
PHP код:
/*=============== RequestAuthLogin (RSA) ===============*/
unsigned char l_reqauthlogin[]=
"\xb2\x00" // Size
"\x00" // RequestAuthLogin (RSA) packet
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00" // GGAuthResponse from GGAuth packet
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00" //CRC
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
pktsize = (unsigned char)(l_reqauthlogin[1]*256+l_reqauthlogin[0]);
memcpy((l_reqauthlogin+2+1+96+2), login, sizeof(login));
memcpy((l_reqauthlogin+2+1+112), pwd, sizeof(pwd));
RSA * rsa_key;
rsa_key = RSA_new();
BIGNUM * bn_mod;
bn_mod = BN_new();
bn_mod = BN_bin2bn(RSA_key, sizeof(RSA_key), NULL);
rsa_key->n = bn_mod;
rsa_key = RSA_generate_key(1024, 65537, NULL, NULL);
result = RSA_public_encrypt (128, (l_reqauthlogin+3), (l_reqauthlogin+3), rsa_key, RSA_NO_PADDING);
if (result <= 0) {
printf("Error: %i %s\n", result, ERR_error_string(ERR_get_error(), NULL));
}
RSA_free(rsa_key);