Java 有没有办法获取XSSFSheet哈希密码?
有人知道为什么XSSFSheets不提供一种获取密码的方法,就像HSSFSheet使用一样。问题是,为什么需要不安全的短两个字节的“密码哈希” 但是:Java 有没有办法获取XSSFSheet哈希密码?,java,excel,apache-poi,xlsx,Java,Excel,Apache Poi,Xlsx,有人知道为什么XSSFSheets不提供一种获取密码的方法,就像HSSFSheet使用一样。问题是,为什么需要不安全的短两个字节的“密码哈希” 但是: 问题是为什么需要不安全的短两个字节的“密码哈希” 但是: import org.apache.poi.ss.usermodel.*; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.xssf.usermodel.*; public class ExcelHSSFXSSF
问题是为什么需要不安全的短两个字节的“密码哈希” 但是:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.xssf.usermodel.*;
public class ExcelHSSFXSSFProtectedSheetPassword {
public static void main(String[] args) throws Exception {
Workbook hssfworkbook = new HSSFWorkbook();
Sheet sheet = hssfworkbook.createSheet();
sheet.protectSheet("passwordExcel");
short pwdHash = ((HSSFSheet)sheet).getPassword();
System.out.println(pwdHash);
hssfworkbook.close();
Workbook xssfworkbook = new XSSFWorkbook();
sheet = xssfworkbook.createSheet();
sheet.protectSheet("passwordExcel");
byte[] pwdBytes = ((XSSFSheet)sheet).getCTWorksheet().getSheetProtection().getPassword();
pwdHash = java.nio.ByteBuffer.wrap(pwdBytes).order(java.nio.ByteOrder.BIG_ENDIAN).getShort();
System.out.println(pwdHash);
xssfworkbook.close();
}
}