Apache Commons logo Apache Commons Codec

Changes

Release History

Version Date Description
1.11 2017-10-20 Feature and fix release.
1.10 5 November 2014 Feature and fix release.
1.9 20 December 2013 Feature and fix release.
1.8 19 April 2013 Feature and fix release. Requires a minimum of Java 1.6.
1.7 11 September 2012 Feature and fix release. Requires a minimum of Java 1.6.
1.6 20 November 2011 Feature and fix release. Requires a minimum of Java 1.5.
1.5 29 March 2011 Feature and fix release. Requires a minimum of Java 1.4.
1.4 9 August 2009 Feature and fix release. Requires a minimum of Java 1.4.
1.3 10 July 2004 Feature and fix release.
1.2 24 Nov 2003 Feature and fix release.
1.1 29 April 2003 The first official release. Numerous projects had been depending on version 1.0-dev while in the Sandbox.
1.0-dev 25 April 2003 Last release from the Sandbox.

Release 1.11 – 2017-10-20

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

Release 1.10 – 5 November 2014

Type Changes By
Add Add Daitch-Mokotoff Soundex. Fixes CODEC-192. Thanks to Thomas Neidhart. ggregory
Add QuotedPrintableCodec does not support soft line break per the 'quoted-printable' example on Wikipedia. Fixes CODEC-121. Thanks to Thomas Neidhart, Java John. ggregory
Fix Added clarification to Javadoc of Base64 concerning the use of the urlSafe parameter. Fixes CODEC-185. Thanks to Sean Busbey. tn
Fix Added clarification to the Javadoc of Base[32|64]OutputStream that it is mandatory to call close(). Fixes CODEC-191. Thanks to Igor Savin. tn
Fix Add support for HMAC Message Authentication Code (MAC) digests. Fixes CODEC-188. Thanks to Hendrik Saly. ggregory
Fix Beider Morse Phonetic Matching producing incorrect tokens. Fixes CODEC-187. Thanks to Michael Tobias, Thomas Neidhart. ggregory
Fix NullPointerException in DoubleMetaPhone.isDoubleMetaphoneEqual when using empty strings. Fixes CODEC-184. Thanks to Cyrille Artho. ggregory
Add Make possible to provide padding byte to BaseNCodec in constructor. Fixes CODEC-181. Thanks to Ivan Martinez-Ortiz. ggregory
Fix Fix Javadoc 1.8.0 errors. Fixes CODEC-180. Thanks to Ville Skyttä. ggregory
Update Deprecate Charsets Charset constants in favor of Java 7's java.nio.charset.StandardCharsets. Fixes CODEC-178. ggregory
Fix Fix Java 8 build Javadoc errors. Fixes CODEC-189. ggregory
Update Update from commons-parent 34 to 35. Fixes CODEC-190. ggregory

Release 1.9 – 20 December 2013

Type Changes By
Update Improve performance of Beider Morse encoder. Fixes CODEC-174. Thanks to Thomas Champagne. ggregory
Fix Beider Morse does not close Scanners used to read config files. Fixes CODEC-175. ggregory
Fix Base32 decode table has spurious value. Fixes CODEC-172. Thanks to Matt Bishop. sebb
Fix Link broken in Metaphone Javadoc. Fixes CODEC-170. Thanks to Ron Wheeler, Henri Yandell. ggregory
Fix Spelling fixes in Javadoc and comments. Fixes CODEC-176. Thanks to Ville Skyttä. ggregory

Release 1.8 – 19 April 2013

Type Changes By
Add Add DigestUtils.updateDigest(MessageDigest, InputStream). Fixes CODEC-168. Thanks to Daniel Cassidy. ggregory
Add Add JUnit to test our decode with pad character in the middle. Fixes CODEC-167. julius
Add Add Match Rating Approach (MRA) phonetic algorithm encoder. Fixes CODEC-161. Thanks to crice. ggregory
Fix ColognePhonetic encoder unnecessarily creates many char arrays on every loop run. Fixes CODEC-163. Thanks to leo141. ggregory
Fix Base64.encodeBase64URLSafeString doesn't add padding characters at the end. Fixes CODEC-160. sebb

Release 1.7 – 11 September 2012

Type Changes By
Add DigestUtils: Add MD2 APIs. Fixes CODEC-157. Thanks to ggregory. ggregory
Add DigestUtils: add APIs named after standard algorithm name SHA-1. Fixes CODEC-156. Thanks to ggregory. ggregory
Add DigestUtils.getDigest(String) should throw IllegalArgumentException instead of RuntimeException. Fixes CODEC-155. Thanks to ggregory. ggregory
Add Create a class MessageDigestAlgorithms to define standard algorithm names. Fixes CODEC-153. Thanks to ggregory. ggregory
Add DigestUtils.getDigest(String) loses the original exception. Fixes CODEC-152. Thanks to ggregory. ggregory
Add Remove unnecessary attempt to fill up the salt variable in UnixCrypt. Fixes CODEC-151. Thanks to lathspell. ggregory
Add Remove unnecessary call to Math.abs(). Fixes CODEC-150. Thanks to lathspell. ggregory
Add More tests and minor things. Fixes CODEC-148. Thanks to lathspell. ggregory
Add Added regression tests for PhoneticEngine based on Solr-3.6.0. Fixes CODEC-146. Thanks to Julius Davies. tn
Update BeiderMorseEncoder/PhoneticEngine: make results deterministic by using a LinkedHashSet instead of a HashSet. Fixes CODEC-147. tn
Update StringBuffer could be replaced by StringBuilder for local variables. Fixes CODEC-143. sebb
Add DigestUtils: add updateDigest methods and make methods public. Fixes CODEC-139. Thanks to dsebastien. ggregory
Add Add classes for MD5/SHA1/SHA-512-based Unix crypt(3) hash variants. Fixes CODEC-133. Thanks to lathspell. ggregory
Fix Base64 encode() method is no longer thread-safe, breaking clients using it as a shared BinaryEncoder. Note: the fix breaks binary compatibility, however the changes are to a class (BaseNCodec) which is intended for internal use. Fixes CODEC-96. Thanks to sebb. ggregory
Fix Complete FilterInputStream interface for BaseNCodecInputStream. Fixes CODEC-138. sebb
Fix Use Charset objects when possible, create Charsets for required character encodings. Fixes CODEC-136. ggregory
Fix BeiderMorseEncoder OOM issues. Fixes CODEC-132. Thanks to rcmuir. ggregory
Fix DoubleMetaphone Javadoc contains dead links. Fixes CODEC-131. Thanks to smolav. tn
Add Base64InputStream.skip skips underlying stream, not output. Fixes CODEC-130. Thanks to tn. ggregory
Add Implement NYSIIS phonetic encoder. Fixes CODEC-63. Thanks to tn. ggregory

Release 1.6 – 20 November 2011

Type Changes By
Fix Use standard Maven directory layout. Fixes CODEC-129. Thanks to ggregory. ggregory
Fix Documentation spelling fixes. Fixes CODEC-128. Thanks to ville.skytta@iki.fi. ggregory
Fix Fix various character encoding issues in comments and test cases. Fixes CODEC-127. ggregory, sebb
Update Implement a Beider-Morse phonetic matching codec. Fixes CODEC-125. Thanks to Matthew Pocock. ggregory, matthewpocock
Update Migrate to Java 5. Fixes CODEC-119. ggregory
Update Migrate to JUnit 4. Fixes CODEC-120. ggregory
Fix ColognePhonetic Javadoc should use HTML entities for special characters. Fixes CODEC-123. ggregory

Release 1.5 – 29 March 2011

Type Changes By
Add Added new Base32 encoder. Fixes CODEC-88. sebb
Fix new Base64().encode() appends a CRLF, and chunks results into 76 character lines. Fixes CODEC-89. sebb
Fix Many test cases use getBytes() which uses the default platform encoding so tests may fail on some platforms. Fixes CODEC-92. sebb
Add Add test(s) to check that encodeBase64() does not chunk output. Fixes CODEC-93. Thanks to sebb. sebb, julius, ggregory
Fix Base64 default constructor behaviour changed to enable chunking in 1.4. Fixes CODEC-97. Thanks to mjryall. sebb
Fix Base64.encodeBase64String() shouldn't chunk. Fixes CODEC-99. Thanks to julius. ggregory
Fix Base64InputStream#read(byte[]) incorrectly returns 0 at end of any stream which is multiple of 3 bytes long. Fixes CODEC-101. Thanks to balusc. julius
Fix Typo in DecoderException message thrown from Hex.decodeHex. Fixes CODEC-103. Thanks to gnuf. bayard
Add ArrayIndexOutOfBoundsException when doing multiple reads() on encoding Base64InputStream. Fixes CODEC-105. Thanks to zak. julius, ggregory
Add Add the "Kölner Phonetik" encoder (Cologne Phonetic) to codec.lang. Fixes CODEC-106. Thanks to it2mmeyerfa. bayard
Add org.apache.commons.codec.net.URLCodec.ESCAPE_CHAR isn't final but should be. Fixes CODEC-111. Thanks to ggregory. ggregory
Add Base64.encodeBase64(byte[] binaryData, boolean isChunked, boolean urlSafe, int maxResultSize) throws IAE for valid maxResultSize if isChunked is false. Fixes CODEC-112. Thanks to sebb. sebb
Add org.apache.commons.codec.language.RefinedSoundex.US_ENGLISH_MAPPING should be package protected MALICIOUS_CODE. Fixes CODEC-113. Thanks to ggregory. ggregory
Add org.apache.commons.codec.language.Soundex.US_ENGLISH_MAPPING should be package protected MALICIOUS_CODE. Fixes CODEC-114. Thanks to ggregory. ggregory
Add DoubleMetaphone.maxCodeLen should probably be private. Fixes CODEC-115. Thanks to sebb. ggregory
Remove Remove deprecated package private method Base64.discardWhitespace(byte[]). Fixes CODEC-116. Thanks to ggregory. ggregory
Fix Caverphone encodes names starting and ending with "mb" incorrectly. Fixes CODEC-117. Thanks to ggregory. ggregory
Add Split Caverphone class into two classes for Caverphone 1.0 and 2.0. Fixes CODEC-118. Thanks to ggregory. ggregory

Release 1.4 – 9 August 2009

Type Changes By
Fix Regression: Base64.encode(chunk=true) has bug when input length is multiple of 76. Fixes CODEC-80. Thanks to Julius Davies. ggregory
Fix Base64 bug with empty input (new byte[0]). Fixes CODEC-77. Thanks to Julius Davies. ggregory
Fix Make Base64 URL-safe. Fixes CODEC-75. Thanks to Julius Davies. ggregory
Add Allow for uppercase letters output in Hex.encodeHex(). Fixes CODEC-74. ggregory
Fix Soundex and RefinedSoundex issues with character arrays. Fixes CODEC-72. Thanks to Sebb. bayard
Fix Base64.isArrayByteBase64() method is inefficient for large byte arrays. Fixes CODEC-71. Thanks to Sebb. bayard
Fix Thread safety and malicious code safety improvements. Fixes CODEC-70. Thanks to Sebb. bayard
Fix isBase64 throws ArrayIndexOutOfBoundsException on some non-BASE64 bytes. Fixes CODEC-68. Thanks to Robert Rodewald. bayard
Fix Fix case-insensitive string handling. Fixes CODEC-65. Thanks to Benjamin Bentmann. bayard
Fix Base64.encodeBase64() throws NegativeArraySizeException on large files. Fixes CODEC-61. Thanks to Igor Slepchin. ggregory
Add Implement Caverphone. Fixes CODEC-60. bayard
Fix Character set used by Base64 not documented. Fixes CODEC-58. Thanks to Julius Davies. ggregory
Fix RefinedSoundex creates instance before al fields have been initialized. Fixes CODEC-56. Thanks to Sebb. bayard
Add Digest on InputStreams. Fixes CODEC-52. Thanks to Niklas Gustavsson. bayard
Fix 2 Test failures in SoundexTest. Fixes CODEC-51. bayard
Add Patch to add crypto-compatible BigInteger encoding support to Base64. Fixes CODEC-40. Thanks to Chris Black. bayard
Add DigestUtils: Add methods for SHA-256, SHA-384, and SHA-512. Fixes CODEC-39. Thanks to Jamie Flournoy. ggregory
Fix Using US_ENGLISH in Soundex caused an NullPointerException. Fixes CODEC-10. Thanks to Reggie Riser. tobrien
Fix Source tarball spews files all over the place. Fixes CODEC-6. Thanks to David Tonhofer. tobrien
Fix Base64.isArrayByteBase64() throws an ArrayIndexOutOfBoundsException for negative octets. Fixes CODEC-22. Thanks to Piero Ottuzzi. ggregory
Add Streaming Base64 (Base64InputStream and Base64OutputStream added). Fixes CODEC-69. Thanks to Julius Davies. jochen
Fix Base64: Improve Code Coverage. Fixes CODEC-78. Thanks to Julius Davies. ggregory
Add Add methods to Base64 which work with String instead of byte[]. Fixes CODEC-59. Thanks to Julius Davies. ggregory
Fix Base64's new constructor parameters ignored. Fixes CODEC-81. Thanks to Julius Davies. ggregory
Fix Improve Double Metaphone test coverage. Fixes CODEC-83. niallp
Fix Double Metaphone bugs in alternative encoding. Fixes CODEC-84. niallp
Fix Make string2byte conversions indepedent of platform default encoding. Fixes CODEC-73. Thanks to Benjamin Bentmann. ggregory

Release 1.3 – 10 July 2004

Type Changes By
Add BinaryCodec: Encodes and decodes binary to and from Strings of 0s and 1s. Fixes CODEC-21. Thanks to Alex Karasulu. ggregory, tobrien
Add QuotedPrintableCodec: Codec for RFC 1521 MIME (Multipurpose Internet Mail Extensions) Part One. Rules #3, #4, and #5 of the quoted-printable spec are not implemented yet. See also issue CODEC-46. Fixes CODEC-41. Thanks to Oleg Kalnichevski. ggregory
Add BCodec: Identical to the Base64 encoding defined by RFC 1521 and allows a character set to be specified. Fixes CODEC-41. Thanks to Oleg Kalnichevski. ggregory
Add QCodec: Similar to the Quoted-Printable content-transfer-encoding defined in RFC 1521 and designed to allow text containing mostly ASCII characters to be decipherable on an ASCII terminal without decoding. Fixes CODEC-41. Thanks to Oleg Kalnichevski. ggregory
Add Soundex: Implemented the DIFFERENCE algorithm. Fixes CODEC-45. Thanks to Matthew Inger. ggregory
Add RefinedSoundex: Implemented the DIFFERENCE algorithm. Fixes CODEC-45. Thanks to Matthew Inger. ggregory
Update This version is relesed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License 2.0</a> , please see LICENSE.txt. Previous versions were released under the <a href="http://www.apache.org/licenses/LICENSE-1.1">Apache License 1.1</a> ggregory
Update The Board recommendation to remove Javadoc author tags has been implemented. All author tags are now "Apache Software Foundation". ggregory
Fix The default URL encoding logic was broken. Fixes CODEC-25. Thanks to Oleg Kalnichevski. ggregory
Fix Base64 chunked encoding not compliant with RFC 2045 section 2.1 CRLF. Fixes CODEC-31. Thanks to Gary D. Gregory. ggregory
Fix Hex converts illegal characters to 255. Fixes CODEC-5. ggregory
Fix Metaphone now correctly handles a silent B in a word that ends in MB. "COMB" is encoded as "KM", before this fix "COMB" was encoded as "KMB". Fixes CODEC-17. tobrien
Fix Added missing tags in Javadoc comments. ggregory
Fix General Javadoc improvements. ggregory

Release 1.2 – 24 Nov 2003

Type Changes By
Add URLCodec: Implements the www-form-urlencoded encoding scheme. Thanks to Oleg Kalnichevski. tobrien
Add DigestUtils: Calculates MD5 and SHA digests. Thanks to Dave Dribin, David Graham. tobrien
Fix Modified Base64 to remedy non-compliance with RFC 2045. Non-Base64 characters were not being discarded during the decode. RFC 2045 explicitly states that all characters outside of the base64 alphabet are to be ignored. Fixes CODEC-26. Thanks to Brian Ewins. tobrien
Fix Hex.decode(Object) throws a ClassCastException when a String argument is passed in. Fixes CODEC-4. ggregory
Fix Soundex: The HW rule is not applied; hyphens and apostrophes are not ignored. Fixes CODEC-3. ggregory
Fix Soundex.setMaxLength causes bugs and is not needed. Calling Soundex.setMaxLength() with a value of 2 or less causes the wrong answer to be returned. Since the encoding returned by Soundex is always of length 4 by definition (we do not use the '-' in as a letter-nnn separator) the need for a maxLength attribute is not needed. Deprecate the field and accessor methods. Fixes CODEC-29. ggregory
Fix Fix in Metaphone relating to the handling of the maximum code length. Members

Release 1.1 – 29 April 2003

Type Changes By
Add A newer version of the Base64 class reflecting improvements from both the commons-httpclient and xml-rpc versions of code forked from catalina. Members
Add Base64 class from commons-httpclient in org.apache.commons.codec.base64 has been retained for backwards compatibility but has been deprecated. Members
Add Soundex class from commons-util in org.apache.commons.codec. Members
Add Metaphone class from commons-util in org.apache.commons.codec. Members
Add RefinedSoundex class in org.apache.commons.codec. tobrien
Add Encoder/Decoder interfaces in org.apache.commons. Members
Add String and Binary specific Encoder/Decoder interfaces in org.apache.commons. Members
Add StringEncoderComparator replaces the SoundexComparator from the language package. Members
Fix Base64 now discards whitespace characters when decoding encoded content. Members

Release 1.0-dev – 25 April 2003

Type Changes By
Add Base64 class from commons-httpclient in org.apache.commons.codec.base64. tobrien
Add Soundex class from commons-util in org.apache.commons.codec. tobrien
Add Metaphone class from commons-util in org.apache.commons.codec. tobrien
Add SoundexComparator class from commons-util in org.apache.commons.codec. Members