Cifrar Archivos y Encriptar Textos

Muchas veces necesitamos encriptar archivos para protegerlos.

Clonarlo
git clone https://avbravo@bitbucket.org/avbravo/fiscalencripter.git

Gracias al blog publicado

Implementamos dentro de jmoordbutils los metodos para encriptar los archivos,

Cifrar Archivo

Deseamos cifrar el archivo license.json

Creamos una aplicación Web

Encriptar Texto

Desencriptar Texto

Cifrar el archivo license.json

Deseamos cifrar el archivo license.json ubicado en el directorio /home/avbravo/Descargas/

Seleccionar CIFRAR ARCHIVOS

Nos solicita el path con nombre de archivo a cifrar

El path del directorio donde se guardara los archivos cifrados

El nombre y path del archivo zip a generar con los archivos cifrados.

Rellenamos los datos y dar clic en Cifrar File

Nos genera los archivos

DESENCRIPTAR ARCHIVO

Para desencriptar indicamos tres archivos generados en la encriptacion y la extension del archivo a desenciptar

al dar clic en Desencriptar File.

se genera el archivo _decrytper, que contiene el archivo desencriptado.dentro de la carpeta license

Se descomprime el archivo authorizedlicense,zip

Dependencia archivo pom.xml

  <dependency>
            <groupId>com.github.avbravo</groupId>
            <artifactId>jmoordbutils</artifactId>
            <version>0.67</version>
        </dependency>

Pagina index.html

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form id="form" prependId="false">
            <p:growl id="growl"/>
            <p:fieldset legend="ENCRIPTAR TEXTO" style="margin-bottom:20px" toggleable="true" collapsed="true">
                <p:panelGrid columns="3">
                    <p:outputLabel value="Texto"/>
                    <p:inputText value ="#{encriptadorController.texto}" size="50"/>
                    <p:commandButton value="Encriptar" icon="fa fa-lock" action="#{encriptadorController.encriptar()}"
                                     update=":form"  />


                    <p:outputLabel value="Resultado"/>
                    <p:outputLabel value="#{encriptadorController.resultadoEncriptado}"/>

                </p:panelGrid>
            </p:fieldset>
            <p:fieldset legend="DESENCRIPTAR TEXTO" style="margin-bottom:20px" toggleable="true" collapsed="true">
                <p:panelGrid columns="3">
                    <p:outputLabel value="Texto"/>
                    <p:inputText value ="#{encriptadorController.textoParaDesencriptar}" size="50"/>

                    <p:commandButton value="Desencriptar" icon="fa fa-unlock" action="#{encriptadorController.desencriptar()}"
                                     update=":form"  />

                    <p:outputLabel value="Resultado"/>
                    <p:outputLabel value="#{encriptadorController.resultadoDesencriptado}"/>

                </p:panelGrid>
            </p:fieldset>




            <p:fieldset legend="CIFRAR ARCHIVOS" style="margin-bottom:20px" toggleable="true" collapsed="true">
                <p:outputLabel value="File Cipher"/>
                <p:panelGrid columns="3">
                    <p:outputLabel value="Ârhivo con path"/>
                    <p:inputText value ="#{encriptadorController.archivo}" size="50"/>
                    <p:spacer/>

                    <p:outputLabel value="Llave de cifrado"/>
                    <p:inputText value ="#{encriptadorController.keyCifrado}" size="50"/>
                    <p:commandButton icon="fa fa-file-zip-o" value="Cifrar File" action="#{encriptadorController.encriptarFile()}"
                                     update=":form"  />
                    <p:spacer/>
                    <p:fieldset legend="ARCHIVOS GENERADOS" style="margin-bottom:20px"  collapsed="false">
                        <p:panelGrid columns="2">
                            <p:outputLabel value=".enc"/>
                            <p:outputLabel value="#{encriptadorController.fileEnc}"/>
                            <p:outputLabel value="iv.enc"/>
                            <p:outputLabel value="#{encriptadorController.fileIvEnc}"/>
                            <p:outputLabel value=".des"/>
                            <p:outputLabel value="#{encriptadorController.fileDes}"/>
                        </p:panelGrid>
                    </p:fieldset>


                </p:panelGrid>
            </p:fieldset>

            <p:fieldset legend="DESENCRIPTAR ARCHIVOS" style="margin-bottom:20px" toggleable="true"  collapsed="true"> 
                <p:outputLabel value="File Desencripter"/>
                <p:panelGrid columns="3">
                    <p:outputLabel value="path file.enc"/>
                    <p:inputText value ="#{encriptadorController.fileEncParaDesencriptar}" size="50"/>
                    <p:spacer/>
                    <p:outputLabel value="path fileiv.enc"/>
                    <p:inputText value ="#{encriptadorController.fileIvEncParaDesencriptar}" size="50"/>
                    <p:spacer/>
                    <p:outputLabel value="path file.des"/>
                    <p:inputText value ="#{encriptadorController.fileDesParaDesencriptar}" size="50"/>
                    <p:spacer/>
                    <p:outputLabel value="Extension of File"/>
                    <p:inputText value ="#{encriptadorController.extension}" size="50"/>
                    <p:spacer/>
                    <p:outputLabel value="Llave de cifrado"/>
                    <p:inputText value ="#{encriptadorController.keyDesCifrado}" size="50"/>
                    <p:commandButton icon="fa fa-file-text-o" value="Desencriptar File" action="#{encriptadorController.desencriptarFile()}"
                                     update=":form"  />

                    <p:outputLabel value="Archivo desencriptado"/>
                    <p:outputLabel value="#{encriptadorController.archivoDesencriptado}"/>

                </p:panelGrid>

            </p:fieldset>

        </h:form>
    </h:body>
</html>

Controller

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.javscaz.fiscalweb.fiscalencripter;

import com.avbravo.jmoordbutils.JsfUtil;
import com.avbravo.jmoordbutils.fileencripter.FileDecryption;
import com.avbravo.jmoordbutils.fileencripter.FileEncryption;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;

/**
 *
 * @author avbravo
 */
@Named(value = "encriptadorController")
@SessionScoped
public class EncriptadorController implements Serializable {
private String texto;
private String textoParaDesencriptar;
private String resultadoEncriptado="";
private String resultadoDesencriptado="";
private String  keyCifrado="a3*%b!Rm1_xS1TkjAWs3";
private String  keyDesCifrado="a3*%b!Rm1_xS1TkjAWs3";
private String archivo="/home/avbravo/Descargas/";
private String archivoDesencriptado="";

    public String getArchivoDesencriptado() {
        return archivoDesencriptado;
    }

    public void setArchivoDesencriptado(String archivoDesencriptado) {
        this.archivoDesencriptado = archivoDesencriptado;
    }


String fileEnc="";
String fileIvEnc="";
String fileDes="";

String fileEncParaDesencriptar="/home/avbravo/Descargas/";
String fileIvEncParaDesencriptar="/home/avbravo/Descargas/";
String fileDesParaDesencriptar="/home/avbravo/Descargas/";




String password="/home/avbravo/Descargas/";;
String extension="json";

    public String getTextoParaDesencriptar() {
        return textoParaDesencriptar;
    }

    public void setTextoParaDesencriptar(String textoParaDesencriptar) {
        this.textoParaDesencriptar = textoParaDesencriptar;
    }







    public String getKeyCifrado() {
        return keyCifrado;
    }

    public void setKeyCifrado(String keyCifrado) {
        this.keyCifrado = keyCifrado;
    }

    public String getKeyDesCifrado() {
        return keyDesCifrado;
    }

    public void setKeyDesCifrado(String keyDesCifrado) {
        this.keyDesCifrado = keyDesCifrado;
    }

    public String getFileDes() {
        return fileDes;
    }

    public void setFileDes(String fileDes) {
        this.fileDes = fileDes;
    }

    public String getResultadoEncriptado() {
        return resultadoEncriptado;
    }

    public void setResultadoEncriptado(String resultadoEncriptado) {
        this.resultadoEncriptado = resultadoEncriptado;
    }

    public String getResultadoDesencriptado() {
        return resultadoDesencriptado;
    }

    public void setResultadoDesencriptado(String resultadoDesencriptado) {
        this.resultadoDesencriptado = resultadoDesencriptado;
    }





    public String getFileEnc() {
        return fileEnc;
    }

    public void setFileEnc(String fileEnc) {
        this.fileEnc = fileEnc;
    }

    public String getFileIvEnc() {
        return fileIvEnc;
    }

    public void setFileIvEnc(String fileIvEnc) {
        this.fileIvEnc = fileIvEnc;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getExtension() {
        return extension;
    }

    public void setExtension(String extension) {
        this.extension = extension;
    }

    public String getFileEncParaDesencriptar() {
        return fileEncParaDesencriptar;
    }

    public void setFileEncParaDesencriptar(String fileEncParaDesencriptar) {
        this.fileEncParaDesencriptar = fileEncParaDesencriptar;
    }

    public String getFileIvEncParaDesencriptar() {
        return fileIvEncParaDesencriptar;
    }

    public void setFileIvEncParaDesencriptar(String fileIvEncParaDesencriptar) {
        this.fileIvEncParaDesencriptar = fileIvEncParaDesencriptar;
    }

    public String getFileDesParaDesencriptar() {
        return fileDesParaDesencriptar;
    }

    public void setFileDesParaDesencriptar(String fileDesParaDesencriptar) {
        this.fileDesParaDesencriptar = fileDesParaDesencriptar;
    }






    public String getArchivo() {
        return archivo;
    }

    public void setArchivo(String archivo) {
        this.archivo = archivo;
    }









    public String getTexto() {
        return texto;
    }

    public void setTexto(String texto) {
        this.texto = texto;
    }

   

    /**
     * Creates a new instance of EncriptadorController
     */
   
    public EncriptadorController() {
    }
    
    
    // <editor-fold defaultstate="collapsed" desc="String encriptar()">
    public String encriptar(){
        try {
             
            if(texto == null || texto.isEmpty()){
                JsfUtil.warningDialog("Advertencia", "Ingrese el texto");
            }
            else{
                resultadoEncriptado = JsfUtil.encriptar(texto);
            }
                    
        } catch (Exception e) {
            JsfUtil.errorDialog("Error", e.getLocalizedMessage());
        }
        return "";
    }
    // </editor-fold>
    
    
    // <editor-fold defaultstate="collapsed" desc="String desencriptar()">
    public String desencriptar(){
        try {
            if(texto == null || texto.isEmpty()){
                JsfUtil.warningDialog("Advertencia", "Ingrese el texto");
            }
            else{
                resultadoDesencriptado = JsfUtil.desencriptar(textoParaDesencriptar);
            }
                    
        } catch (Exception e) {
            JsfUtil.errorDialog("Error", e.getLocalizedMessage());
        }
        return "";
    }
    
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="String encriptarFile()">
    public String encriptarFile(){
        try{
            if(FileEncryption.cifrar(archivo, keyCifrado)){
               JsfUtil.successMessage("Se encripto archivo");
                 fileEnc= archivo.substring(0, archivo.lastIndexOf('.'))+".enc";
                fileIvEnc = archivo.substring(0, archivo.lastIndexOf('.'))+"iv.enc";
                fileDes = archivo.substring(0, archivo.lastIndexOf('.'))+".des";
           
                 fileEncParaDesencriptar= archivo.substring(0, archivo.lastIndexOf('.'))+".enc";
                fileIvEncParaDesencriptar = archivo.substring(0, archivo.lastIndexOf('.'))+"iv.enc";
                fileDesParaDesencriptar = archivo.substring(0, archivo.lastIndexOf('.'))+".des";
           
               extension = archivo.substring(archivo.lastIndexOf('.')+1, archivo.length());
           
            }else{
                JsfUtil.warningMessage("No se encriptp el archivo");
            }
          } catch (Exception e) {
            JsfUtil.errorDialog("encriptarFile()", e.getLocalizedMessage());
        }
        return "";
    }
    
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="String desencriptarFile()">
    public String desencriptarFile(){
        try{
       
            if(FileDecryption.desencriptarFile(fileEncParaDesencriptar, fileIvEncParaDesencriptar, fileDesParaDesencriptar, keyDesCifrado, extension)){
               JsfUtil.successMessage("Se desencripto archivo");
                archivoDesencriptado= fileEncParaDesencriptar.substring(0, fileEncParaDesencriptar.lastIndexOf('.'))+"_decrypted."+extension;
            }else{
                JsfUtil.warningMessage("No se desencriptp el archivo");
            }
         
          } catch (Exception e) {
            JsfUtil.errorDialog("desencriptarFile()", e.getLocalizedMessage());
        }
        return "";
    }
    
    // </editor-fold>
}

Last updated