Java 添加数字签名到excel及检测,删除签名

Excel中可添加数字签名以供文档所有者申明文档的所有权或有效性。文本以Java代码示例介绍如何在Excel文档中对数字签名功能进行相关操作,包括如何添加签名到Excel、检测Excel文档是否已签名,以及如何删除Excel文档中的签名。

本次代码测试环境

  • Excel版本:2013
  • 编译环境:IntelliJ IDEA2018
  • JDK版本:1.8.0
  • Excel库工具:spire.xls.jar 4.3.4
  • Pfx数字证书(及密码)

下面分别以三个代码块来展示如何实现。

1. 添加签名

import com.spire.xls.*;
import com.spire.xls.digital.CertificateAndPrivateKey;
import java.util.Date;

public class AddSignature {
  public static void main(String[] args) throws Exception {
    //加载Excel工作簿
    Workbook wb = new Workbook();
    wb.loadFromFile("test.xlsx");

    //添加数字签名
    wb.addDigitalSignature(new CertificateAndPrivateKey("cer.pfx","123654yes!"), "The Author is Mia",new Date());

    //保存文档
    wb.saveToFile("AddSignature.xlsx",ExcelVersion.Version2013);
    wb.dispose();
  }
}

签名添加结果:

2.检测是否签名

import com.spire.xls.*;
public class DetectSignature {
  public static void main(String[] args) {
    //加载Excel工作簿
    Workbook wb = new Workbook();
    wb.loadFromFile("AddSignature.xlsx");

    //判断文档是否签名
    boolean signature = wb.isDigitallySigned();
    if(signature==true)
    {
      System.out.println("文档已签名!");
    }
    else
      {
        System.out.println("未签名文档!");
      }
  }
}

检测结果:

3.删除签名

import com.spire.xls.*;

public class RemoveSignature {
  public static void main(String[] args) {
    //加载Excel工作簿
    Workbook wb = new Workbook();
    wb.loadFromFile("AddSignature.xlsx");

    //删除签名
    wb.removeAllDigitalSignatures();

    //保存文档
    wb.saveToFile("RemoveSignature.xlsx",ExcelVersion.Version2013);
    wb.dispose();
  }
}

执行程序代码后,生成的结果文档中不再有签名。

以上就是Java 添加数字签名到excel及检测,删除签名的详细内容,更多关于Java 添加数字签名到excel的资料请关注我们其它相关文章!

(0)

相关推荐

  • 详解Java删除Map中元素java.util.ConcurrentModificationException”异常解决

    今天在使用map并需要根据某些条件删除map元素时,自然而然想到调用Map中的remove(Object key)函数进行删除,代码如下: //遍历map,如果key<5,那么就删除此元素. Map<Integer, Integer> users = new LinkedHashMap<Integer, Integer>(); for (Map.Entry<Integer,Integer> entry : users.entrySet()){ for (int i

  • IDEA插件之快速删除Java代码中的注释

    背景 有时,我们需要删除Java源代码中的注释.目前有不少方法,比如: 实现状态机.该方式较为通用,适用于多种语言(取决于状态机支持的注释符号). 正则匹配.该方式容易误判,尤其是容易误删字符串. 利用第三方库.该方式局限性较强,比如不同语言可能有不同的第三方库. 本文针对Java语言,介绍一种利用第三方库的方式,可以方便快速地移除代码中的注释. 原理 这个第三方库叫做JavaParser.它可以分析Java源码,并生成语法分析树(AST),其中注释也属于AST中的节点. 因此核心思路即为: J

  • Java中List遍历删除元素remove()的方法

    今天碰见根据条件进行list遍历remove的问题,第一时间就是简单for循环remove,只知道这么写不行,不安全,可是为什么呢?你想过吗?下面就关于List遍历remove的问题,深挖一下! 一.几种常见的遍历方式 1.普通for循环 2.高级for循环 3.iterator和removeIf 4.stream() 5.复制 6.普通for循环 --> 倒序方式 二.源码篇 1.普通for循环出错原因 public boolean remove(Object o) { if (o == nu

  • Java如何通过File类方法删除指定文件夹中的全部文件

    前言 对delete的解说 那么问题来了!!! (②中的问题,怎么删除文件夹里所有文件,想必很多同学也和我一样懵,) 别着急(往下看) 要用到的方法 (递归思想) 如果文件夹里面还有文件夹,就继续往下找(可能不太官方,个人理解) 接下来 代码展示 方法一: package com.study; import java.io.File; import java.io.IOException; /** 1. 应用场景 2. delete删除只能删除空文件夹 和文件 3. 删除指定文件夹 */ pub

  • 解决Java Redis删除HashMap中的key踩到的坑

    现象 Java使用Redis删除HashMap中的key时,取出对应的HashMap后通过Java中HashMap的remove方法移除key然后重新调用redis的Hmset方法将覆盖无效 示例代码 //通过key取出对应的HashMap Map<String, String> ruleMap = jedisCluster.hgetAll("HashKey"); //通过java中移除HashMap中的Key ruleMap.remove("ruleA"

  • Java File类的简单使用教程(创建、删除、遍历与判断是否存在等)

    前言 Java文件类以抽象的方式代表文件名和目录路径名.该类本身不能用来读数据或写数据,它主要用于磁盘上文件和目录的创建.文件的查找和文件的删除.做一些非读写方面的工作,比如看看文件是否存在.是否可读写及遍历文件目录等等.要想读写数据,必须和其它io流的类配合使用,比如FileInputStream.FileOutputStream等.File对象代表磁盘中实际存在的文件和目录,以下就通过一些简单的列子介绍File的基本使用. 这是整个File简单使用的代码: 1 package com.tia

  • Java实战之基于I/O流设计的图书管理系统

    一.前言 当前,我还没有学到数据库相关的知识,想要完全通过Java来完成一个可以存储数据的图书馆管理系统就只能使用I/O流的知识,将内容都保存到文件中,再进行增删改查的操作,这就很考验我们的Java基础知识掌握能力. 二.项目介绍 Java基本语法的掌握 流程控制语句的熟练使用 面向对象思想的理解 能否熟练使用封装.继承.多态 接口.异常的熟悉 集合的使用 是否熟悉掌握I/O流相关操作 三.项目说明 传统的人工管理图书馆流程繁琐,我们需求设计一个图书馆管理系统来方便学生借书以及管理员管理书籍 系

  • Java使用RedisTemplate模糊删除key操作

    Redis模糊匹配批量删除操作,使用RedisTemplate操作: public void deleteByPrex(String prex) { Set<String> keys = redisTemplate.keys(prex); if (CollectionUtils.isNotEmpty(keys)) { redisTemplate.delete(keys); } } prex为迷糊匹配的key,如cache:user:* 这里需要判断keys是否存在,如果一个都匹配不到会报错:

  • Java基础之删除文本文件中特定行的内容

    一.问题的产生 基于I/O流编写的图书馆管理系统 在最近使用I/O流写图书馆管理系统中管理员对图书和用户的管理操作时,遇到了需要删除特定图书和用户的操作,在查询资料和询问老师后得知I/O流中没有可以直接删除单独行的方法. 二.解决思路 同时也为我提供了新的思路:将整个文件中的全部内容读取出来,然后通过集合将每一行单独存放,通过查找到集合内特定的内容后,将该行内容删除,此时list集合会自动将后面的内容填补上来,再重新写入的时候不会出现空行的情况.这时再重新遍历一次该集合,将现在的集合内容写入文件

  • java迭代器中删除元素的实例操作详解

    我们知道通过Iterator,可以对集合中的元素进行遍历.那么在其中遇到我们不需要的元素时,可不可以在遍历的时候顺便给删除呢?答案是当然可以.在Iterator下有一个remove函数,专门用于删除的操作.下面我们就remove进行讲解,然后对删除元素方法进行说明,最后带来实例的展示. 1.Iterator中的remove void remove():删除迭代器刚越过的元素 从基础集合中移除这个迭代器返回的最后一个元素(可选操作).两个线程中都删除,保证线程的同步. 2.删除元素说明 (1)迭代

随机推荐