Java免费文件安全加密解密 - Go语言中文社区

Java免费文件安全加密解密


官网地址:C#/VB.Net Excel, Word, PowerPoint, PDF Component - Welcome to e-iceblue Company Ltd

 Java集成Excel加解密示例

配置文件

文件枚举

package com.boonya.spring.mybatis.plus.enums;

import lombok.Getter;

@Getter
public enum FileType {

    EXCEL(".xls","Excel"),
    EXCEL_X(".xls","Excel X"),
    JSON(".json","JSON"),
    PDF(".pdf","PDF"),
    WORD(".doc","WORD"),
    WORD_X(".docx","WORD X"),
    ;

    private String type;
    private String desc;

    private FileType(String type,String desc){
        this.type = type;
        this.desc = desc;
    }
}

抽象定义

package com.boonya.spring.mybatis.plus.config;

import com.boonya.spring.mybatis.plus.enums.FileType;
import com.spire.xls.Workbook;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

import java.io.File;

@Configuration
public abstract class AbstractEncryptDecryptConfig {

    /**
     * 临时保存路径
     */
    @Value("${file.encrypt.save.path}")
    protected static final String TEMP_URL = "";

    /**
     * 加密保存路径
     */
    @Value("${file.encrypt.save.path}")
    protected static final String ENCRYPT_URL = "";

    /**
     * 解密保存路径
     */
    @Value("${file.decrypt.save.path}")
    protected static final String DECRYPT_URL = "";

    /**
     * 保存操作后的文件
     *
     * @param wb
     * @param targetPath
     */
    protected void save(Workbook wb, String targetPath) {
        File file = new File(targetPath);
        if (!file.exists()) {
            wb.saveToFile(targetPath);
        }
    }

    public String getEncryptFilePath(String fileName, FileType type) {
        return ENCRYPT_URL + File.separator + fileName + type.getType();
    }

    public String getDecryptFilePath(String fileName, FileType type) {
        return DECRYPT_URL + File.separator + fileName + type.getType();
    }

    /**
     * 加密
     *
     * @param fileName
     * @param securityPwd
     */
    public abstract void encrypt(String fileName, String securityPwd);

    /**
     * 解密
     *
     * @param fileName
     * @param securityPwd
     */
    public abstract void decrypt(String fileName, String securityPwd);
}

加密解密

Workbook

package com.boonya.spring.mybatis.plus.config;

import com.boonya.spring.mybatis.plus.enums.FileType;
import com.spire.xls.Workbook;
import org.springframework.stereotype.Component;
import java.io.File;

@Component
public class WorkbookEncryptDecrypt extends AbstractEncryptDecryptConfig {

    /**
     * 加密Excel
     *
     * @param fileName
     * @param securityPwd
     */
    public void encrypt(String fileName, String securityPwd) {
        //加载Excel文档
        Workbook wb = new Workbook();
        wb.loadFromFile(TEMP_URL + File.separator + fileName);
        //加密工作簿
        wb.protect(securityPwd);
        //保存文档
        String targetPath = getEncryptFilePath(fileName, fileName.contains(FileType.EXCEL.getType()) ? FileType.EXCEL : FileType.EXCEL_X);
        save(wb, targetPath);
    }

    /**
     * 解密Excel
     *
     * @param fileName
     * @param securityPwd
     */
    public void decrypt(String fileName, String securityPwd) {
        //加载文档
        Workbook wb = new Workbook();
        wb.setOpenPassword(securityPwd);
        wb.loadFromFile(ENCRYPT_URL + File.separator + fileName);
        //解除密码保护
        wb.unProtect();
        //保存文档
        String targetPath = getDecryptFilePath(fileName, fileName.contains(FileType.EXCEL.getType()) ? FileType.EXCEL : FileType.EXCEL_X);
        save(wb, targetPath);
        wb.dispose();
    }
}

Worksheet

package com.boonya.spring.mybatis.plus.config;

import com.boonya.spring.mybatis.plus.enums.FileType;
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import org.springframework.stereotype.Component;
import java.io.File;
@Component
public class WorkSheetEncryptDecrypt extends AbstractEncryptDecryptConfig{

    /**
     * 加密Excel
     * @param fileName
     * @param securityPwd
     */
    public void  encrypt(String fileName,String securityPwd){
        //加载Excel文档
        Workbook wb = new Workbook();
        wb.loadFromFile(TEMP_URL + File.separator + fileName);
        //获取工作表,加密
        Worksheet sheet = wb.getWorksheets().get(0);
        sheet.protect(securityPwd);
        //保存文档
        String targetPath = getEncryptFilePath(fileName ,fileName.contains(FileType.EXCEL.getType()) ? FileType.EXCEL : FileType.EXCEL_X);
        wb.saveToFile(targetPath, FileFormat.Version2013);
        wb.dispose();
    }

    /**
     * 解密Excel
     * @param fileName
     * @param securityPwd
     */
    public void  decrypt(String fileName,String securityPwd){
        //加载文档
        Workbook wb = new Workbook();
        wb.loadFromFile(ENCRYPT_URL + File.separator + fileName);
        //获取工作表
        Worksheet sheet = wb.getWorksheets().get(0);
        //解除工作表的密码保护
        sheet.unprotect(securityPwd);
        //保存文档
        String targetPath = getDecryptFilePath(fileName , fileName.contains(FileType.EXCEL.getType()) ? FileType.EXCEL : FileType.EXCEL_X);
        wb.saveToFile(targetPath);
        wb.dispose();
    }
}

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/boonya/article/details/121385108
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-12-11 17:47:21
  • 阅读 ( 976 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢