You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2018/03/23 11:10:34 UTC
groovy git commit: Add DGM `digest`(closes #677)
Repository: groovy
Updated Branches:
refs/heads/master 8cb379349 -> ea4165007
Add DGM `digest`(closes #677)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/ea416500
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/ea416500
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/ea416500
Branch: refs/heads/master
Commit: ea4165007b1342d2f55331f571e1161962697c89
Parents: 8cb3793
Author: Daniel Sun <re...@hotmail.com>
Authored: Fri Mar 23 18:37:43 2018 +0800
Committer: sunlan <su...@apache.org>
Committed: Fri Mar 23 19:09:57 2018 +0800
----------------------------------------------------------------------
.../groovy/runtime/EncodingGroovyMethods.java | 37 +++++++++++++++-----
.../runtime/EncodingGroovyMethodsTest.java | 6 ++++
2 files changed, 35 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/ea416500/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
index 8eb846c..1fabef1 100644
--- a/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/EncodingGroovyMethods.java
@@ -43,10 +43,9 @@ import static org.codehaus.groovy.runtime.EncodingGroovyMethodsSupport.TRANSLATE
public class EncodingGroovyMethods {
private static final char[] T_TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".toCharArray();
-
private static final char[] T_TABLE_URLSAFE = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=".toCharArray();
-
private static final String CHUNK_SEPARATOR = "\r\n";
+ private static final String MD5 = "MD5";
/**
* Produce a Writable object which writes the Base64 encoding of the byte array.
@@ -373,23 +372,45 @@ public class EncodingGroovyMethods {
/**
* Calculate md5 of the CharSequence instance
* @return md5 value
- * @throws NoSuchAlgorithmException if no MD5 algorithm found
+ * @throws NoSuchAlgorithmException if MD5 algorithm not found
* @since 2.5.0
*/
public static String md5(CharSequence self) throws NoSuchAlgorithmException {
- final String text = self.toString();
-
- return md5(text.getBytes(StandardCharsets.UTF_8));
+ return digest(self, MD5);
}
/**
* Calculate md5 of the byte array
* @return md5 value
- * @throws NoSuchAlgorithmException if no MD5 algorithm found
+ * @throws NoSuchAlgorithmException if MD5 algorithm not found
* @since 2.5.0
*/
public static String md5(byte[] self) throws NoSuchAlgorithmException {
- MessageDigest md5 = MessageDigest.getInstance("MD5");
+ return digest(self, MD5);
+ }
+
+ /**
+ * digest the CharSequence instance
+ * @param algorithm the name of the algorithm requested, e.g. MD5, SHA-1, SHA-256, etc.
+ * @return digested value
+ * @throws NoSuchAlgorithmException if the algorithm not found
+ * @since 2.5.0
+ */
+ public static String digest(CharSequence self, String algorithm) throws NoSuchAlgorithmException {
+ final String text = self.toString();
+
+ return digest(text.getBytes(StandardCharsets.UTF_8), algorithm);
+ }
+
+ /**
+ * digest the byte array
+ * @param algorithm the name of the algorithm requested, e.g. MD5, SHA-1, SHA-256, etc.
+ * @return digested value
+ * @throws NoSuchAlgorithmException if the algorithm not found
+ * @since 2.5.0
+ */
+ public static String digest(byte[] self, String algorithm) throws NoSuchAlgorithmException {
+ MessageDigest md5 = MessageDigest.getInstance(algorithm);
md5.update(ByteBuffer.wrap(self));
return String.format("%032x", new BigInteger(1, md5.digest()));
http://git-wip-us.apache.org/repos/asf/groovy/blob/ea416500/src/test/java/org/codehaus/groovy/runtime/EncodingGroovyMethodsTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/codehaus/groovy/runtime/EncodingGroovyMethodsTest.java b/src/test/java/org/codehaus/groovy/runtime/EncodingGroovyMethodsTest.java
index 4155a4c..20c0897 100644
--- a/src/test/java/org/codehaus/groovy/runtime/EncodingGroovyMethodsTest.java
+++ b/src/test/java/org/codehaus/groovy/runtime/EncodingGroovyMethodsTest.java
@@ -27,4 +27,10 @@ public class EncodingGroovyMethodsTest {
Assert.assertEquals("e99a18c428cb38d5f260853678922e03", EncodingGroovyMethods.md5("abc123"));
Assert.assertEquals("e99a18c428cb38d5f260853678922e03", EncodingGroovyMethods.md5("abc123".getBytes("UTF-8")));
}
+
+ @Test
+ public void digest() throws Exception {
+ Assert.assertEquals("e99a18c428cb38d5f260853678922e03", EncodingGroovyMethods.digest("abc123", "MD5"));
+ Assert.assertEquals("e99a18c428cb38d5f260853678922e03", EncodingGroovyMethods.digest("abc123".getBytes("UTF-8"), "MD5"));
+ }
}