Exemplo n.º 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;
  }