예제 #1
0
  /**
   * Construyye una configuración de cifrado.
   *
   * @param algo Algoritmo de cifrado
   * @param mode Modo de bloque para el cifrado
   * @param padd Relleno (<i>padding</i>) del cifrado
   */
  public AOCipherConfig(
      final AOCipherAlgorithm algo, final AOCipherBlockMode mode, final AOCipherPadding padd) {

    // En caso de nulos tomamos defectos y algunas combinaciones
    // predefinidas
    final AOCipherAlgorithm ciphAlgo = algo != null ? algo : AOCipherAlgorithm.getDefault();

    AOCipherBlockMode ciphMode = mode;
    if (ciphMode == null) {
      if (ciphAlgo.equals(AOCipherAlgorithm.PBEWITHMD5ANDDES)
          || ciphAlgo.equals(AOCipherAlgorithm.PBEWITHSHA1ANDDESEDE)
          || ciphAlgo.equals(AOCipherAlgorithm.PBEWITHSHA1ANDRC2_40)) {
        ciphMode = AOCipherBlockMode.CBC;
      } else {
        ciphMode = AOCipherBlockMode.ECB;
      }
    }

    AOCipherPadding ciphPadding = padd;
    if (ciphPadding == null) {
      ciphPadding = AOCipherPadding.PKCS5PADDING;
    }
    this.algo = ciphAlgo;
    this.mode = ciphMode;
    this.padding = ciphPadding;
  }
예제 #2
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);
  }