code: public CipherOutputStream wrapOutputStream(OutputStream os, byte[] iv) throws GeneralSecurityException, IOException {
  		Cipher cipher = getCipher(true);
  		if(iv == null && generateIV && ivLength > 0) {
  			iv = generateIV();
  		}
  		if(iv != null) {
  			cipher.init(Cipher.ENCRYPT_MODE, getKey(), getAlgorithmParameterSpec(iv));
  		} else {
  			cipher.init(Cipher.ENCRYPT_MODE, getKey());
  			iv = cipher.getIV();
  		}
  		ivThreadLocal.set(iv);
  		if(prependIV && iv != null) {
  			os.write(iv);
  		}
  		return new CipherOutputStream(os, cipher);
  	}
docs: <p>Wraps an <code>OutputStream</code> with a <code>CipherOutputStream</code> using this encryptor's cipher.</p>
  <p>If an <code>ivLength</code> has been specified or an explicit IV has been set during construction
  and <code>prependIV</code> is set to <code>true</code> this method will write an IV to the <code>OutputStream</code> before wrapping it.</p>
  @param os
  @return
  @throws GeneralSecurityException
  @throws IOException