diff --git a/common/source/java/ch/systemsx/cisd/common/utilities/StringUtilities.java b/common/source/java/ch/systemsx/cisd/common/utilities/StringUtilities.java index 2218e53583cc61156700568df19e5b0baa9c4106..866f517a212d748bd6da095721bde15917feda01 100644 --- a/common/source/java/ch/systemsx/cisd/common/utilities/StringUtilities.java +++ b/common/source/java/ch/systemsx/cisd/common/utilities/StringUtilities.java @@ -16,12 +16,15 @@ package ch.systemsx.cisd.common.utilities; +import java.security.MessageDigest; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; +import ch.systemsx.cisd.common.exceptions.CheckedExceptionTunnel; + /** * Some useful utlities methods for {@link String}s. * <p> @@ -68,6 +71,36 @@ public final class StringUtilities { // This class can not be instantiated. } + + /** + * Encrypts the specified string by calculating its MD5 hash value. + * + * @return 32-character hexadecimal representation of the calculated value. + */ + public static String encrypt(String string) + { + assert string != null : "Unspecified string."; + + try + { + MessageDigest algorithm = MessageDigest.getInstance("MD5"); + algorithm.reset(); + algorithm.update(string.getBytes("utf8")); + byte messageDigest[] = algorithm.digest(); + + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < messageDigest.length; i++) + { + byte b = messageDigest[i]; + builder.append(Integer.toHexString(0xF & (b >> 4))); + builder.append(Integer.toHexString(0xF & b)); + } + return builder.toString(); + } catch (Exception ex) + { + throw CheckedExceptionTunnel.wrapIfNecessary(ex); + } + } /** * <em>Note that this method will transform <code>cAptcha</code> into <code>Captcha</code>, while diff --git a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/StringUtilitiesTest.java b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/StringUtilitiesTest.java index 3822b9ac74970d6eed60223cfb553744ca461218..e769b8ab30c6182e8ff9fac0a942bdcb332709ee 100644 --- a/common/sourceTest/java/ch/systemsx/cisd/common/utilities/StringUtilitiesTest.java +++ b/common/sourceTest/java/ch/systemsx/cisd/common/utilities/StringUtilitiesTest.java @@ -57,6 +57,13 @@ public class StringUtilitiesTest final String brokenDownInLines = String.format("one%1$stwo%1$sthree", System.getProperty("line.separator")); assertEquals(brokenDownInLines, StringUtilities.concatenateWithNewLine(list)); } + + @Test + public void testEncrypt() + { + assertEquals("d41d8cd98f00b204e9800998ecf8427e", StringUtilities.encrypt("")); + assertEquals("900150983cd24fb0d6963f7d28e17f72", StringUtilities.encrypt("abc")); + } @Test public final void testGetOrdinal()