import java.util.Hashtable;

public class Passwd {

  public static Hashtable table;

  public static String encryptUrl(String url) {
    String tmp = "ftp://";

// si ce n'est pas Ftp, on ne sait pas traiter
    if (!url.startsWith("ftp://"))
      return url;

// Si il n'y a pas de @, il n'y a pas de mot de passe    
    int ind = url.substring(6).indexOf('@');
    if (ind==-1)
      return url;

// Si il y un mot de passe, il faut le login et le numero de port
    int first = url.indexOf(':', 6), last = url.lastIndexOf(':');
    if (first==-1)
      return url;

// Recupere la partie contenant le mot de passe
    String passwd;   
    if (last==-1)   
      passwd = url.substring(first+1);
    else 
      passwd = url.substring(first+1, last);
    
// Recupere la fin de l'URL
    int endUrl = url.lastIndexOf(' ');

    return url.substring(0, first+1)
	 + encrypt(url.substring(6, first)+url.substring(ind+6, endUrl),passwd)
	 + url.substring(last);
  }

  public static String encrypt(String id, String text) {
    if (text==null)
      return text;

// Allocation de la table si elle est vide
    if (table == null)
      table = new Hashtable();

    String tmp ="";
    for (int i=0; i<text.length(); i++)
      tmp += '*';

    table.put(id, text);  
    return tmp;
  }

  public static String decryptUrl(String url) {
    String tmp = "ftp://";

// si ce n'est pas Ftp, on ne sait pas traiter
    if (!url.startsWith("ftp://"))
      return url;

// Si il n'y a pas de @, il n'y a pas de mot de passe    
    int ind = url.substring(6).indexOf('@');
    if (ind==-1)
      return url;

// Si il y un mot de passe, il faut le login et le numero de port
    int first = url.indexOf(':', 6), last = url.lastIndexOf(':');
    if (first==-1)
      return url;

// Recupere la partie contenant le mot de passe
    String passwd;   
    if (last==-1)   
      passwd = url.substring(first+1);
    else 
      passwd = url.substring(first+1, last);
    
    return url.substring(0, first+1)
	 + decrypt(url.substring(6, first)+url.substring(ind+6),passwd)
	 + url.substring(last);
  }

  public static String decrypt(String id, String text) {
    if (table == null)
      return null;
    return (String)table.get(id);
  }

}
