パスワード「abcdabcdef」を持つmsアクセスデータベース「abc.accdb」があります。次のコマンドを使用して、Jackcess Encrypt で開こうとしました。
package com.sample;
import java.io.File;
import java.io.IOException;
import com.healthmarketscience.jackcess.CryptCodecProvider;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.DatabaseBuilder;
import com.healthmarketscience.jackcess.Row;
import com.healthmarketscience.jackcess.Table;
import com.healthmarketscience.jackcess.impl.CodecProvider;
public class Test {
public static void main(String[] args) throws IOException {
CryptCodecProvider cryptProvider = new CryptCodecProvider("abcdabcdef");
Database db = new DatabaseBuilder(new File("abc.accdb")).setCodecProvider((CodecProvider) cryptProvider).open();
Table table = db.getTable("Checklist");
for(Row row : table) {
System.out.println("Column 'Company' has value: " + row.get("Company"));
}
}
}
次の例外が発生します。
Exception in thread "main" java.lang.IllegalStateException: com.healthmarketscience.jackcess.impl.office.EncryptionHeader@1af7c57 key size is outside allowable range
at com.healthmarketscience.jackcess.impl.office.EncryptionHeader.read(EncryptionHeader.java:185)
at com.healthmarketscience.jackcess.impl.office.RC4CryptoAPIProvider.<init>(RC4CryptoAPIProvider.java:55)
at com.healthmarketscience.jackcess.impl.OfficeCryptCodecHandler.create(OfficeCryptCodecHandler.java:121)
at com.healthmarketscience.jackcess.CryptCodecProvider.createHandler(CryptCodecProvider.java:117)
at com.healthmarketscience.jackcess.impl.PageChannel.initialize(PageChannel.java:120)
at com.healthmarketscience.jackcess.impl.DatabaseImpl.<init>(DatabaseImpl.java:511)
at com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:386)
at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:170)
at com.sample.Test.main(Test.java:14)
データベース ファイルを開くにはどうすればよいですか? 「キー サイズが許容範囲外です」という例外の回避策はありますか? ファイルのパスワードを変更することは許可されていないことに注意してください。