有沒有人知道java匯入excel時,如何驗證作業簿的保護密碼是否正確?
正確密碼已知,密碼在我匯出的時候已經設定好了,如: sheet.protectSheet(new String("123456"));//123456是密碼,
但我如何再匯入的時候來驗證這個密碼的正確性。
如下圖:
uj5u.com熱心網友回復:
跪求大神指教啊!!!!



uj5u.com熱心網友回復:
首先在匯入的時候校驗正確性 是指讀取作業簿的時候輸入密碼嗎?Decryptor.getInstance(new EncryptionInfo(new NPOIFSFileSystem(File file, boolean readOnly))).verifyPassword(password);
還是校驗作業簿的密碼有沒有被篡改?
在匯出的時候將對應密碼存盤起來,然后在匯入的時候校驗
uj5u.com熱心網友回復:
對的, 是指讀取作業簿里面資料的時候的時驗證作業簿的保護密碼是否正確,正確密碼已知,需要在匯入的時候根據已知的正確密碼驗證匯入檔案的作業簿密碼是否正確。目的:規定用戶操作時只能用由系統匯出的excel模板,來匯入資料更新,如圖一和圖二,
圖一,
圖二
uj5u.com熱心網友回復:
這個方法是不能用嗎?
boolean checkResult = Decryptor.getInstance(new EncryptionInfo(new NPOIFSFileSystem(new File(""), true))).verifyPassword("123456");
if (checkResult){
//檢測正確
}
uj5u.com熱心網友回復:
03版本的xls excel可以這樣Workbook workbook = WorkbookFactory.create(new FileInputStream(file));
Sheet other = workbook.getSheet("sheet");
short passwordEncode = (short) CryptoFunctions.createXorVerifier1("123456");
Object _sheet = Reflections.getFieldValue(other, "_sheet");
Object _protectionBlock = Reflections.getFieldValue(_sheet, "_protectionBlock");
Object _passwordRecord = Reflections.getFieldValue(_protectionBlock, "_passwordRecord");
short field_1_password = (short) Reflections.getFieldValue(_passwordRecord, "field_1_password");
if(passwordEncode == field_1_password) {
System.out.println("密碼正確");
}else {
System.out.println("密碼錯誤");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/271089.html
標籤:Web 開發
