ulong xorKey = new ulong( ); xorKey &= 0xFF << 8; xorKey |= (byte) randNum.Next( 8, 64 ); int bitPos = (int) xorKey & 0xFF; bitPos -= bitPos%8; ulong bitMask = (ulong) 2 >> --bitPos; bitMask--; xorKey &= bitMask; xorKey |= (ulong) keySeed << ++bitPos; return xorKey;