You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2012/04/21 03:16:20 UTC
svn commit: r1328553 - in /commons/proper/codec/trunk/src:
changes/changes.xml
main/java/org/apache/commons/codec/digest/DigestUtils.java
test/java/org/apache/commons/codec/digest/DigestUtilsTest.java
Author: ggregory
Date: Sat Apr 21 01:16:19 2012
New Revision: 1328553
URL: http://svn.apache.org/viewvc?rev=1328553&view=rev
Log:
[CODEC-139] DigestUtils: add updateDigest methods and make methods public.
Modified:
commons/proper/codec/trunk/src/changes/changes.xml
commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/DigestUtilsTest.java
Modified: commons/proper/codec/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/changes/changes.xml?rev=1328553&r1=1328552&r2=1328553&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/changes/changes.xml (original)
+++ commons/proper/codec/trunk/src/changes/changes.xml Sat Apr 21 01:16:19 2012
@@ -51,7 +51,10 @@ The <action> type attribute can be add,u
</release>
-->
<release version="1.7" date="TBD" description="Feature and fix release.">
- <action dev="ggregory" type="fix" issue="CODEC-133" due-to="lathspell">
+ <action dev="ggregory" type="add" issue="CODEC-139" due-to="dsebastien">
+ DigestUtils: add updateDigest methods and make methods public.
+ </action>
+ <action dev="ggregory" type="add" issue="CODEC-133" due-to="lathspell">
Add classes for MD5/SHA1/SHA-512-based Unix crypt(3) hash variants.
</action>
<action dev="ggregory" type="fix" issue="CODEC-96" due-to="sebb">
Modified: commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java?rev=1328553&r1=1328552&r2=1328553&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java (original)
+++ commons/proper/codec/trunk/src/main/java/org/apache/commons/codec/digest/DigestUtils.java Sat Apr 21 01:16:19 2012
@@ -81,7 +81,7 @@ public class DigestUtils {
* @throws RuntimeException
* when a {@link java.security.NoSuchAlgorithmException} is caught.
*/
- static MessageDigest getDigest(String algorithm) {
+ public static MessageDigest getDigest(String algorithm) {
try {
return MessageDigest.getInstance(algorithm);
} catch (NoSuchAlgorithmException e) {
@@ -96,7 +96,7 @@ public class DigestUtils {
* @throws RuntimeException
* when a {@link java.security.NoSuchAlgorithmException} is caught.
*/
- private static MessageDigest getMd5Digest() {
+ public static MessageDigest getMd5Digest() {
return getDigest("MD5");
}
@@ -110,7 +110,7 @@ public class DigestUtils {
* @throws RuntimeException
* when a {@link java.security.NoSuchAlgorithmException} is caught.
*/
- private static MessageDigest getSha256Digest() {
+ public static MessageDigest getSha256Digest() {
return getDigest("SHA-256");
}
@@ -124,7 +124,7 @@ public class DigestUtils {
* @throws RuntimeException
* when a {@link java.security.NoSuchAlgorithmException} is caught.
*/
- private static MessageDigest getSha384Digest() {
+ public static MessageDigest getSha384Digest() {
return getDigest("SHA-384");
}
@@ -138,7 +138,7 @@ public class DigestUtils {
* @throws RuntimeException
* when a {@link java.security.NoSuchAlgorithmException} is caught.
*/
- private static MessageDigest getSha512Digest() {
+ public static MessageDigest getSha512Digest() {
return getDigest("SHA-512");
}
@@ -149,7 +149,7 @@ public class DigestUtils {
* @throws RuntimeException
* when a {@link java.security.NoSuchAlgorithmException} is caught.
*/
- private static MessageDigest getShaDigest() {
+ public static MessageDigest getShaDigest() {
return getDigest("SHA");
}
@@ -578,4 +578,34 @@ public class DigestUtils {
public static String shaHex(String data) {
return Hex.encodeHexString(sha(data));
}
+
+ /**
+ * Updates the given {@link MessageDigest}.
+ *
+ * @param messageDigest
+ * the {@link MessageDigest} to update
+ * @param valueToDigest
+ * the value to update the {@link MessageDigest} with
+ * @return the updated {@link MessageDigest}
+ * @since 1.7
+ */
+ public static MessageDigest updateDigest(final MessageDigest messageDigest, final String valueToDigest) {
+ messageDigest.update(getBytesUtf8(valueToDigest));
+ return messageDigest;
+ }
+
+ /**
+ * Updates the given {@link MessageDigest}.
+ *
+ * @param messageDigest
+ * the {@link MessageDigest} to update
+ * @param valueToDigest
+ * the value to update the {@link MessageDigest} with
+ * @return the updated {@link MessageDigest}
+ * @since 1.7
+ */
+ public static MessageDigest updateDigest(final MessageDigest messageDigest, byte[] valueToDigest) {
+ messageDigest.update(valueToDigest);
+ return messageDigest;
+ }
}
Modified: commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/DigestUtilsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/DigestUtilsTest.java?rev=1328553&r1=1328552&r2=1328553&view=diff
==============================================================================
--- commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/DigestUtilsTest.java (original)
+++ commons/proper/codec/trunk/src/test/java/org/apache/commons/codec/digest/DigestUtilsTest.java Sat Apr 21 01:16:19 2012
@@ -22,8 +22,10 @@ import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream;
import java.io.IOException;
+import java.security.MessageDigest;
import java.util.Random;
+import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.binary.StringUtils;
import org.junit.Test;
@@ -177,4 +179,41 @@ public class DigestUtilsTest {
DigestUtils.shaHex(new ByteArrayInputStream(testData)));
}
+
+ @Test
+ public void testUpdateWithByteArray(){
+ final String d1 = "C'est un homme qui rentre dans un café, et plouf";
+ final String d2 = "C'est un homme, c'est qu'une tête, on lui offre un cadeau: 'oh... encore un chapeau!'";
+
+ MessageDigest messageDigest = DigestUtils.getShaDigest();
+ messageDigest.update(d1.getBytes());
+ messageDigest.update(d2.getBytes());
+ final String expectedResult = Hex.encodeHexString(messageDigest.digest());
+
+ messageDigest = DigestUtils.getShaDigest();
+ DigestUtils.updateDigest(messageDigest, d1.getBytes());
+ DigestUtils.updateDigest(messageDigest, d2.getBytes());
+ final String actualResult = Hex.encodeHexString(messageDigest.digest());
+
+ assertEquals(expectedResult, actualResult);
+ }
+
+ @Test
+ public void testUpdateWithString(){
+ final String d1 = "C'est un homme qui rentre dans un café, et plouf";
+ final String d2 = "C'est un homme, c'est qu'une tête, on lui offre un cadeau: 'oh... encore un chapeau!'";
+
+ MessageDigest messageDigest = DigestUtils.getShaDigest();
+ messageDigest.update(StringUtils.getBytesUtf8(d1));
+ messageDigest.update(StringUtils.getBytesUtf8(d2));
+ final String expectedResult = Hex.encodeHexString(messageDigest.digest());
+
+ messageDigest = DigestUtils.getShaDigest();
+ DigestUtils.updateDigest(messageDigest, d1);
+ DigestUtils.updateDigest(messageDigest, d2);
+ final String actualResult = Hex.encodeHexString(messageDigest.digest());
+
+ assertEquals(expectedResult, actualResult);
+ }
+
}