Пример #1
0
  /**
   * Genera un objeto AOCipherConfig a partir de una cadena que siga uno de los siguientes patrones:
   *
   * <ul>
   *   <li>Algoritmo/ModoBloque/Padding
   *   <li>Algoritmo
   * </ul>
   *
   * Si s&oacute;lo se especifica el algoritmo de cifrado, se tomara el modo y el padding
   * configurados por defecto para ese algoritmo.
   *
   * @return AOCipherConfig con una configuraci&oacute; espec&iacute;fica de cifrado
   * @param cipherConfig Configuraci&oacute;n de cifrado.
   * @throws NoSuchAlgorithmException Cuando el algoritmo no est&aacute; soportado.
   */
  public static AOCipherConfig parse(final String cipherConfig) throws NoSuchAlgorithmException {
    // Desmenbramos el algoritmo por si se ha indicado el modo de bloque y
    // el padding

    AOCipherAlgorithm cipAlgo = null;
    AOCipherBlockMode cipBlockMode = null;
    AOCipherPadding cipPadding = null;
    final String[] algoConfig = cipherConfig.split("/"); // $NON-NLS-1$
    cipAlgo = AOCipherAlgorithm.getValueOf(algoConfig[0]);
    if (cipAlgo == null) {
      throw new NoSuchAlgorithmException();
    }

    // Establecemos el resto de la configuracion
    if (algoConfig.length == 3) {
      cipBlockMode = AOCipherBlockMode.getValueOf(algoConfig[1]);
      cipPadding = AOCipherPadding.getValueOf(algoConfig[2]);
    }
    return new AOCipherConfig(cipAlgo, cipBlockMode, cipPadding);
  }