Encrypt() public method

public Encrypt ( string iv, string key ) : void
iv string
key string
return void
Beispiel #1
0
        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);
        }