private void OnAccepted(Session session) { // 초기화 _user = null; // 각 8비트마다 0이 나오지 않는 임의 숫자 생성 Int32 seed = 0; seed |= Randomizer.NextNumber(1, 255) << 24; seed |= Randomizer.NextNumber(1, 255) << 16; seed |= Randomizer.NextNumber(1, 255) << 8; seed |= Randomizer.NextNumber(1, 255); // 패킷 암호화 키 생성 { String characterSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"; char[] ascii = new char[16]; for (Int32 i = 0; i < 16; ++i) { Int32 val = seed & (0x6E << i); ascii[i] = characterSet[(val % characterSet.Length)]; } _aesIV = new String(ascii); for (Int32 i = 0; i < 16; ++i) { Int32 val = seed & (0xF4 << i); ascii[i] = characterSet[(val % characterSet.Length)]; } _aesKey = new String(ascii); } SecurePacket ntfPacket = new SecurePacket(Protocol.GetID("CS_Hello_Ntf")); ntfPacket.PutInt32(ResultCode.Ok); ntfPacket.PutInt32((Int32)ServerType.GameServer); ntfPacket.PutInt32(seed); ntfPacket.Encrypt(ServerMain.AES_IV, ServerMain.AES_Key); base.SendPacket(ntfPacket); }