Сообщений: 357
Тем: 58
Зарегистрирован: Jan 2016
Репутация:
116
01-16-2016, 12:02 AM
(Сообщение последний раз редактировалось: 01-16-2016, 12:20 PM Sojang.)
PROGRAMMATOR Написал:Это в base64, без нее 162 байта, отступить 29 байт инфы о ключе, выбрать 128 байт ключа, пропустить 2 байта с размерами public экспоненты и в конце сама экспонента.
Получается 128 ключик и три байта экспонента, так что всё верно. Другое дело все это скормить клиенту.
Сделал без base64 пропустил 29 байт,выбрал 128 байт ключа и пропустил 2 байта,но всё равно клиент обрывает соединение
[SRC="csharp"]
byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded(); // length = 162
byte[] buff = new byte[131];
Buffer.BlockCopy(serializedPublicBytes, 29, buff, 0, serializedPublicBytes.Length - 31);
Buffer.BlockCopy(serializedPublicBytes, 159, buff, 128, 3);
[/SRC]
Добавлено через 12 часов 12 минут
Что то один раз удалось зайти,а во второй раз нет
Сообщений: 538
Тем: 76
Зарегистрирован: Aug 2012
Репутация:
7
Dom2 Написал:Сделал без base64 пропустил 29 байт,выбрал 128 байт ключа и пропустил 2 байта,но всё равно клиент обрывает соединение
[SRC="csharp"]
byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded(); // length = 162
byte[] buff = new byte[131];
Buffer.BlockCopy(serializedPublicBytes, 29, buff, 0, serializedPublicBytes.Length - 31);
Buffer.BlockCopy(serializedPublicBytes, 159, buff, 128, 3);
[/SRC]
Добавлено через 12 часов 12 минут
Что то один раз удалось зайти,а во второй раз нет
а ты ключ правильно генерируешь?
Сообщений: 357
Тем: 58
Зарегистрирован: Jan 2016
Репутация:
116
правильно вроде.
короче я тут заметил клиент не закрывается только в 3-4 случаях из 10...что это такое вообще?
[SRC="csharp"]
writer.Write(new byte[] { 0x96, 0x00 });
writer.Write(new byte[] { 0x02, 0x02 });
writer.Write(new byte[] {
0x00, 0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,
0x02, 0x0b, 0x00, 0x09, 0x00,
0x85, 0x00, 0x80, 0x00 });
writer.Write(buff);
writer.Write(new byte[] { 0x01, 0x00, 0x11, 0x01, 0x01 });
[/SRC]
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Когда клиент падает, он выводит отладочную информацию. Возможно там он говорит, что ему не понравилось?
Сообщений: 357
Тем: 58
Зарегистрирован: Jan 2016
Репутация:
116
PROGRAMMATOR Написал:Когда клиент падает, он выводит отладочную информацию. Возможно там он говорит, что ему не понравилось? Да ничего нужного не пишет.Вот последние строчки в логе BC
Код: ..\..\..\src\i3Framework\i3Framework.cpp(905) : [void __thiscall i3Framework::OnUpdate(float)] :[20160116:14:28:24] i3Framework::OnUpdate() - STATE_LOAD_END Enter
..\..\..\src\i3Framework\i3Framework.cpp(931) : [void __thiscall i3Framework::OnUpdate(float)] :[20160116:14:28:24] i3Framework::OnUpdate() - STATE_LOAD_END Leave
E:\PB_Backup_All\2015-01-15\PointBlank\Source_New\ClientSource\Source\GameFramework.cpp(3086) : [void __thiscall CGameFramework::OnUpdate(float)] :[20160116:14:28:24] i3Framework::OnUpdate() - STATE_FADEIN_START Enter
E:\PB_Backup_All\2015-01-15\PointBlank\Source_New\ClientSource\Source\GameFramework.cpp(3089) : [void __thiscall CGameFramework::OnUpdate(float)] :[20160116:14:28:24] i3Framework::OnUpdate() - STATE_FADEIN_START Leave
[2016/1/16-14h:28m:27s(282)] VSN C:2.12.18 S:2.11.9
[2016/1/16-14h:28m:27s(285)] * LOGIN 1 - start
[2016/1/16-14h:28m:27s(290)] * LOGIN 1 - end
Сообщений: 538
Тем: 76
Зарегистрирован: Aug 2012
Репутация:
7
явно ид сессии не может быть 0
Сообщений: 357
Тем: 58
Зарегистрирован: Jan 2016
Репутация:
116
Boris2105 Написал:явно ид сессии не может быть 0
Изменил на 1 не помогло
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Сообщений: 357
Тем: 58
Зарегистрирован: Jan 2016
Репутация:
116
PROGRAMMATOR Написал:Значит проблема в ключе.
Вроде же всё правильно.Я в гугле брал инфу о генерации пары.
Сначала вот так генерирую пару:
[SRC="csharp"]
public static AsymmetricCipherKeyPair GeneratePair()
{
CryptoApiRandomGenerator randomGenerator = new CryptoApiRandomGenerator();
SecureRandom secureRandom = new SecureRandom(randomGenerator);
RsaKeyPairGenerator rsa = new RsaKeyPairGenerator();
rsa.Init(new KeyGenerationParameters(secureRandom, 1024));
AsymmetricCipherKeyPair pair = rsa.GenerateKeyPair();
return pair;
}
[/SRC]
Далее вот так вот получаю байты ключа:
[SRC="csharp"]
SubjectPublicKeyInfo publicKeyInfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(pair.Public);
byte[] serializedPublicBytes = publicKeyInfo.ToAsn1Object().GetDerEncoded();
byte[] buff = new byte[128];
Buffer.BlockCopy(serializedPublicBytes, 29, buff, 0, serializedPublicBytes.Length - 34);
[/SRC]
Где проблема тогда?((
Сообщений: 6,450
Тем: 262
Зарегистрирован: Nov 2007
Репутация:
44,165
Да так сложно что-либо понять, кода "молча" ложится. У меня обычно если ключ он не принял - то выводит стандартное окно BugTrap и там пишет, что-то типа:
|