private MessageDigest cloneMessageDigest(){
  try {
    return (MessageDigest)messageDigest.clone();
  }
 catch (  CloneNotSupportedException e) {
    return getMessageDigest();
  }
}

private MessageDigest cloneMessageDigest ( ) { try { return ( MessageDigest ) messageDigest . clone ( ) ; } catch ( CloneNotSupportedException e ) { return getMessageDigest ( ) ; } }
clone message digest to support simultaneous requests .
