1

我正在尝试使用 java 连接 DB2 数据库,在我提供的驱动程序和连接字符串详细信息下方,

Class.forName("com.ibm.db2.jcc.DB2Driver");

DB2DataSource db2ds = new DB2DataSource();
db2ds.setServerName("servername");
db2ds.setPortNumber(portnumber);
db2ds.setDatabaseName(databasename);
db2ds.setUser(username);
db2ds.setPassword(password);
db2ds.setSecurityMechanism(DB2BaseDataSource.ENCRYPTED_USER_AND_DATA_SECURITY);
db2ds.setDriverType(4);    
sourceConnection=db2ds.getConnection();

对于这个连接,我添加了以下罐子

1)db2jcc.jar 
2)db2jcc_license_cu.jar

但我收到以下错误,

com.ibm.db2.jcc.a.SqlException: java.security.InvalidAlgorithmParameterException is caught when initializing EncryptionManager 'Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive)'
at com.ibm.db2.jcc.a.x.<init>(x.java:89)
at com.ibm.db2.jcc.b.b.lc(b.java:2353)
at com.ibm.db2.jcc.b.b.A(b.java:1190)
at com.ibm.db2.jcc.b.b.b(b.java:759)
at com.ibm.db2.jcc.b.b.a(b.java:725)
at com.ibm.db2.jcc.b.b.a(b.java:430)
at com.ibm.db2.jcc.b.b.<init>(b.java:374)
at com.ibm.db2.jcc.DB2DataSource.getSimpleConnection(DB2DataSource.java:87)
at com.ibm.db2.jcc.DB2DataSource.getConnection(DB2DataSource.java:65)
at com.ibm.db2.jcc.DB2DataSource.getConnection(DB2DataSource.java:47)
at TestDB2.main(TestDB2.java:73)

我尝试了不同的安全机制,但仍然遇到相同的错误。我为安全机制尝试的以下选项,

1) ENCRYPTED_USER_AND_DATA_SECURITY 
2) CLEAR_TEXT_PASSWORD_SECURITY 
3) ENCRYPTED_PASSWORD_SECURITY 
4) ENCRYPTED_USER_AND_PASSWORD_SECURITY
5)ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY

我正在使用 JDK 1.6.0 版本来开发代码

请指导成功连接需要做什么。

提前致谢。

4

1 回答 1

0

您将不得不使用SecurityProvider. BouncyCastleProvider对您来说可能是一个不错的选择。您所要做的就是,作为方法使用的第一步,getConnection()如下行:

 Security.addProvider(new BouncyCastleProvider());
于 2013-06-20T09:39:29.127 回答