### Question:
NTLMEngineImpl implements NTLMEngine { private static byte[] lmv2Response(final byte[] hash, final byte[] challenge, final byte[] clientData) { final HMACMD5 hmacMD5 = new HMACMD5(hash); hmacMD5.update(challenge); hmacMD5.update(clientData); final byte[] mac = hmacMD5.getOutput(); final byte[] lmv2Response = new byte[mac.length + clientData.length]; System.arraycopy(mac, 0, lmv2Response, 0, mac.length); System.arraycopy(clientData, 0, lmv2Response, mac.length, clientData.length); return lmv2Response; } NTLMEngineImpl(); @Override String generateType1Msg(
            final String domain,
            final String workstation); @Override String generateType3Msg(
            final String username,
            final char[] password,
            final String domain,
            final String workstation,
            final String challenge);  }### Answer:
@Test public void testLMv2Response() throws Exception { final NTLMEngineImpl.CipherGen gen = new NTLMEngineImpl.CipherGen( new Random(1234), 1234L, "DOMAIN", "user", "SecREt01".toCharArray(), toBytes("0123456789abcdef"), "DOMAIN", null, toBytes("ffffff0011223344"), toBytes("ffffff0011223344"), null, null); checkArraysMatch(toBytes("d6e6152ea25d03b7c6ba6629c2d6aaf0ffffff0011223344"), gen.getLMv2Response()); }