| 
		
	
	
	
		
	Сообщений: 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 и там пишет, что-то типа: ![[Изображение: lakEX.png]](http://image.zone-game.info/images/2016/01/17/lakEX.png)  |