New features: o Add support for XXHash32 Issue: CODEC-241. o Fluent interface for DigestUtils Issue: CODEC-220. o Fluent interface for HmacUtils Issue: CODEC-222. o Add support for CRC32-C Issue: CODEC-171. Thanks to Brett Okken. o Add HmacAlgorithms.HMAC_SHA_224 (Java 8 only) Issue: CODEC-217. Thanks to Gary Gregory. o Support JEP 287: SHA-3 Hash Algorithms Issue: CODEC-213. Thanks to Gary Gregory. o Create a minimal Digest command line utility: org.apache.commons.codec.digest.Digest Issue: CODEC-212. Thanks to Gary Gregory. o Add DigestUtils.getDigest(String, MessageDigest) Issue: CODEC-210. Thanks to Gary Gregory. o Make some DigestUtils APIs public Issue: CODEC-208. Thanks to Gary Gregory. o Add java.io.File APIs to MessageDigestAlgorithm Issue: CODEC-206. Thanks to Gary Gregory. o BaseNCodecOutputStream only supports writing EOF on close() Issue: CODEC-183. Thanks to Steven Wurster. o Support SHA-224 in DigestUtils on Java 8 Issue: CODEC-195. Thanks to Gary Gregory. o Support java.nio.ByteBuffer in org.apache.commons.codec.binary.Hex Issue: CODEC-194. Thanks to Gary Gregory. o Support java.nio.ByteBuffer in DigestUtils Issue: CODEC-193. Thanks to Michael Donaghy. o Add BaseNCodec.encode(byte[], int, int) input with offset and length parameters for Base64 and Base32. Issue: CODEC-202. Thanks to Oleg Kalnichevski. o Add convenience method decodeHex(String). Issue: CODEC-203. Thanks to Gary Gregory. o Add faster CRC32 implementation. Issue: CODEC-205. Thanks to Gary Gregory. o Add convenience API org.apache.commons.codec.binary.Hex.encodeHexString(byte[]|ByteBuffer, boolean). Issue: CODEC-224. Thanks to Gary Gregory. o Add Automatic-Module-Name manifest entry for Java 9. Issue: CODEC-242. Thanks to Gary Gregory. Fixed Bugs: o Base64.encodeBase64String could better use newStringUsAscii (ditto encodeBase64URLSafeString) Issue: CODEC-145. Thanks to Jesse Glick. o BaseNCodec: encodeToString and encodeAsString methods are identical Issue: CODEC-144. o URLCodec is neither immutable nor threadsafe Issue: CODEC-232. o StringUtils.equals(CharSequence cs1, CharSequence cs2) can fail with String Index OBE Issue: CODEC-231. o URLCodec.WWW_FORM_URL should be private Issue: CODEC-230. o StringUtils.newStringxxx(null) should return null, not NPE Issue: CODEC-229. o Fix minor resource leaks Issue: CODEC-225. Thanks to Svetlin Zarev. o Base32.HEX_DECODE_TABLE contains the wrong value 32 Issue: CODEC-200. Thanks to Luciano Vernaschi. o Charsets Javadoc breaks build when using Java 8 Issue: CODEC-207. Thanks to Gary Gregory. o Bug in HW rule in Soundex Issue: CODEC-199. Thanks to Yossi Tamari. o Javadoc for SHA-224 DigestUtils methods should mention Java 1.8.0 restriction instead of 1.4.0. Issue: CODEC-209. Thanks to Gary Gregory. o Don't deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets Issue: CODEC-219. Thanks to Gary Gregory, Sebb. Changes: o Base32.decode should support lowercase letters Issue: CODEC-234. Thanks to Christopher Schultz, Sebb. o Soundex should support more algorithm variants Issue: CODEC-233. Thanks to Yossi Tamari. o HmacUtils.updateHmac calls reset() unnecessarily Issue: CODEC-221. Removed: o Drop obsolete Ant build Issue: CODEC-223.