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()