1

我正在使用开源库java-libpst来解析 Outlookpst文件。在解析之前我想知道该文件是否受密码保护。问题是我们这个库打开密码保护的文件没有密码,所以我没有找到任何检查文件是否受密码保护的方法。

我可以为此目的使用任何其他 java 库,只要它们是开源的。

4

2 回答 2

1

不知道 .pst 文件的任何开源 java 库,但有商业库JPST。我们用它来读取 .pst 文件。该库能够从 .pst 文件中读取密码哈希。我记得密码存储在 MessageStore 对象中。

密码不用于加密 .pst 文件内容。任何应用程序或库都可以在不知道密码的情况下读取 Outlook .pst 文件。

于 2013-02-28T06:04:28.170 回答
1

在受密码保护的 pst 文件中,实际上没有加密。pst 文件的密码存储在标识符 0x67FF 中。如果没有密码,则存储的值为 0x00000000。Outlook 在打开 pst 文件时会匹配此密码。由于这个原因,java库java-libpst也可以在不需要密码的情况下访问密码保护文件的所有内容。

要检查文件是否受密码保护,请使用 java-libpst 使用:

     /**
     * checks if a pst file is password protected
     * 
     * @param file - pst file to check 
     * @return - true if protected,false otherwise
     * 
     * pstfile has the password stored against identifier 0x67FF.
     * if there is no password the value stored is 0x00000000.
     */
    private static boolean ifProtected(PSTFile file,boolean reomovePwd){
        try {
            String fileDetails = file.getMessageStore().getDetails();
            String[] lines = fileDetails.split("\n");
            for(String line:lines){
                if(line.contains("0x67FF")){
                    if(line.contains("0x00000000"))
                        return false;
                    else
                        return true;
                }

            }
        } catch (PSTException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }
于 2013-02-28T10:12:50.713 回答