Añadiendo contraseñas a nuestros ficheros de Microsoft
Esta entrada será un poco mas corta que la anterior ya que los pasos son prácticamente los mismo, pero lo que cambia son las librerías que utilizaremos y el script en groovy.

Vamos a los pasos. Si vas perdido te recomiendo ver la entrada anterior.
Importando las librerias
En este caso hay que importar unas cuantas librerías para poder encriptar a continuación la lista:
- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4
- https://mvnrepository.com/artifact/org.apache.commons/commons-compress
- https://mvnrepository.com/artifact/org.apache.poi/poi
- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml/5.2.3
- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-full
- https://mvnrepository.com/artifact/com.zaxxer/SparseBitSet
- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans
El resultado de la importación debería ser algo así:

Encriptando el Words
A continuación añadimos el paso de encriptación de word en groovy:
import com.sap.gateway.ip.core.customdev.util.Message
import org.apache.poi.xwpf.usermodel.XWPFDocument
import org.apache.poi.poifs.filesystem.POIFSFileSystem
import org.apache.poi.poifs.crypt.EncryptionInfo
import org.apache.poi.poifs.crypt.Encryptor
import org.apache.poi.poifs.crypt.EncryptionMode
import java.io.ByteArrayInputStream
import java.io.ByteArrayOutputStream
def Message processData(Message message) {
def inputPayload = message.getBody(byte[])
// Password
def pass = "1234"
if (inputPayload && inputPayload.length > 0) {
doc = new XWPFDocument(new ByteArrayInputStream(inputPayload))
} else {
doc = new XWPFDocument()
doc.createParagraph().createRun().setText("Prova")
}
// Preparar encriptación
POIFSFileSystem fs = new POIFSFileSystem()
EncryptionInfo info = new EncryptionInfo(EncryptionMode.agile)
Encryptor enc = info.getEncryptor()
enc.confirmPassword(pass)
// Documento encriptado en byte array
ByteArrayOutputStream bos = new ByteArrayOutputStream()
OutputStream os = enc.getDataStream(fs)
doc.write(os)
os.close()
doc.close()
fs.writeFilesystem(bos)
fs.close()
message.setBody(bos.toByteArray())
return message
}
Con estos tips ya podéis proteger también vuestros ficheros Word.
Como siempre dale a la campanita de notificaciones y comparte en redes ayudarme a llegar a más personas.
Me encanta la contraseña por defecto