1

オープン ソース ライブラリjava-libpstを使用して Outlookファイルをpst解析しています。解析する前に、ファイルがパスワードで保護されているかどうかを知りたいです。ファイルがパスワードで保護されているかどうかを確認する方法。

オープンソースであれば、この目的のために他の 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 です。このパスワードは、pst ファイルを開くときに Outlook によって照合されます。この理由により,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 に答える