java 加密 excel
java对excel文件进行加密?
打开文件后就提示输入密码,否则不能打开文件
org.apache.poi.hssf.usermodel.HSSFWorkbook
public void writeProtectWorkbook(@NotNull java.lang.String password,
@NotNull java.lang.String username)
这个api只能对文件进行写保护。
涛哥叫我来视察
9 years, 9 months ago
Answers
有点好奇,找了一下,的确如题主所说,poi的支持不太好,加密只能是改成只读的没办法完全拦截
poi源码:
public void writeProtectWorkbook(String password, String username) {
FileSharingRecord frec = getFileSharing();
WriteAccessRecord waccess = getWriteAccess();
/* WriteProtectRecord wprotect = */getWriteProtect();
frec.setReadOnly((short) 1);
frec.setPassword(FileSharingRecord.hashPassword(password));
frec.setUsername(username);
waccess.setUsername(username);
}
然后又找了下,很多人问没有被解决的,找到了个替代的方法见 poi-security
WorksheetEncryptor.encrypt(excelFile, new FileOutputStream("file.xlsx"), "111");
Workbook decrypt = WorksheetDecryptor.decrypt(new File("file.xlsx"), "111");
下来大概试了一下,只能修改xlsx的文件,是用加密把xlsx本身包装了一下,之后再用解密的方法来得到excel对象,加密后的文件excel软件没办法正常读取了
洗手见天使
answered 9 years, 9 months ago