public static TIIFID getFid(int fid) {
   TIIFID togo = null;
   for (TIIFID fidobj : TIIFID.values()) {
     if (fidobj.fidnum == fid) {
       togo = fidobj;
     }
   }
   return togo;
 }
  private static String buildTurnitinMD5(
      Map<String, Object> parameters, String secretKey, List<String> sortedkeys) {

    TIIFID fid = TIIFID.getFid(Integer.parseInt((String) parameters.get("fid")));
    Collections.sort(sortedkeys);

    StringBuilder md5sb = new StringBuilder();
    for (int i = 0; i < sortedkeys.size(); i++) {
      if (fid.includeParamInMD5(sortedkeys.get(i))) {
        md5sb.append(parameters.get(sortedkeys.get(i)));
      }
    }

    md5sb.append(secretKey);

    String md5;
    try {
      md5 = getMD5(md5sb.toString());
    } catch (NoSuchAlgorithmException t) {
      log.warn("MD5 error creating class on turnitin");
      throw new RuntimeException("Cannot generate MD5 hash for Turnitin API call", t);
    }
    return md5;
  }