Current MD5 UDF implementation uses Apache Commons DigestUtils.md5Hex method to get md5 hex.
DigestUtils does not provide md5Hex method with signature (byte, start, length). This is why copyBytes method was added to UDFMd5 to get bytes from BytesWritable.
To avoid copying bytes from BytesWritable to new byte array we can use java MessageDigest API directly.
MessageDigest has method update(byte, start, length)