2013-06-20 2 views
1

Я пытаюсь подключить базу данных DB2 с помощью Java, ниже водитель и строки соединения деталей я даю,Исключения при подключении к источнику DB2 с помощью драйвера Java JDBC

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) 

Я пытался отличаться лор механизм безопасности, но до сих пор я получаю то же error.the ниже вариантов я попытался для механизма безопасности,

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 версии для разработки кода

Пожалуйста, руководство о том, что необходимо выполнить для успешного соединения.

Заранее спасибо.

ответ

0

Вам необходимо использовать SecurityProvider. BouncyCastleProvider может быть хорошим вариантом для вас. Все, что вам нужно сделать, это сделать первый шаг в использовании метода getConnection(), используя нижеследующую строку:

Security.addProvider(new BouncyCastleProvider()); 
+0

привет, спасибо за ответ. я не могу добавить поставщика в файл безопасности, поэтому я скопировал файл и вставлял его в другое место и добавлял поставщика в файл безопасности, чем я добавил ниже код кода в своем старом коде, импорт org.bouncycastle.jce.provider.BouncyCastleProvider; ..... Security.addProvider (новый org.bouncycastle.jce.provider.BouncyCastleProvider()); –

+0

И мы добавили местоположение файла безопасности в аргументы VM в eclipse. -Djava.security.policy = \ java.security теперь я получил ту же ошибку, поэтому я зашифровать свой пароль, используя приведенный ниже код, а затем я поставил этот пароль в источник данных. На этот раз также я получил ту же ошибку. "com.ibm.db2.jcc.a.SqlException: java.security.InvalidAlgorithmParameterException улавливается при инициализации EncryptionManager 'Основной размер должен быть кратным 64 и может варьироваться от 512 до 1024 (включительно)'" –

+0

final String AES_ALGORITHM = "AES/CTR/NoPadding"; final String PROVIDER = BouncyCastleProvider.PROVIDER_NAME; конечный байт [] AES_KEY_128 = {// Жесткий код 78, -90, 42, 70, -5, 20, -114, 103, -99, -25, 76, 95, -85, 94, 57, 54}; конечный байт [] IV = {// Жесткий код на данный момент -85, -67, -5, 88, 28, 49, 49, 85, 114, 83, -40, 119, -65, 91, 76 , 108}; final SecretKeySpec secretKeySpec = новый SecretKeySpec (AES_KEY_128, "AES"); final IvParameterSpec ivSpec = новый IvParameterSpec (IV); –

Смежные вопросы