jodd-core/src/main/java/jodd/crypt/BlockCipher.java
public byte[] decrypt(final byte[] encryptedContent) {
		FastByteBuffer fbb = new FastByteBuffer();

		int length = encryptedContent.length;
		int blockCount = length / blockSizeInBytes;

		int offset = 0;
		for (int i = 0; i < blockCount - 1; i++) {
			byte[] decrypted = decryptBlock(encryptedContent, offset);

			fbb.append(decrypted);

			offset += blockSizeInBytes;
		}

		// process last block
		byte[] decrypted = decryptBlock(encryptedContent, offset);

		// find terminator
		int ndx = blockSizeInBytes - 1;

		while (ndx >= 0) {
			if (decrypted[ndx] == TERMINATOR) {
				break;
			}
			ndx--;
		}

		fbb.append(decrypted, 0, ndx);

		return fbb.toArray();
	}
public byte[] decrypt(final byte[] encryptedContent) {
		FastByteBuffer fbb = new FastByteBuffer();

		int length = encryptedContent.length;
		int blockCount = length / blockSizeInBytes;

		int offset = 0;
		for (int i = 0; i < blockCount - 1; i++) {
			byte[] decrypted = decryptBlock(encryptedContent, offset);

			fbb.append(decrypted);

			offset += blockSizeInBytes;
		}

		// process last block
		byte[] decrypted = decryptBlock(encryptedContent, offset);

		// find terminator
		int ndx = blockSizeInBytes - 1;

		while (ndx >= 0) {
			if (decrypted[ndx] == TERMINATOR) {
				break;
			}
			ndx--;
		}

		fbb.append(decrypted, 0, ndx);

		return fbb.toArray();
	}
Decrypts the whole content, block by block.