AIX jre不会抛出任何异常

时间:2015-05-28 04:26:42

标签: java aes encryption-symmetric jce

最近,我遇到了加密db密码的要求,该密码用于使用symmetric key algorithm为独立调度程序创建连接。

使用java swing utility加密第一个db密码,我使用aes128位加密并将其放入属性文件中。  然后在创建连接的connection manager类中,从属性文件中读取密码并使用相同的密钥解密。在我的最后,我已经在aix服务器上进行了测试,其中此代码正在运行,但在客户端它无法正常工作。它无法解密。在连接管理器类中跟随语句后,它将退出方法,没有任何异常。

pwd=AES128Encryption.decrypt(PAYTFHomeProperties.getProperty("PWD").toString().trim());

我认为这与jce.jar有关。这是我的解密方法和连接管理器类,我解密密码。

protected  Connection getConnection(){

             try{

                 mcName=PAYTFHomeProperties.getProperty("MACHINE_NAME");
                 sid=PAYTFHomeProperties.getProperty("SID");
                 port=PAYTFHomeProperties.getProperty("DB_PORT");
                 UserName=PAYTFHomeProperties.getProperty("USER_NAME");
                 pwd=AES128Encryption.decrypt(PAYTFHomeProperties.getProperty("PWD").toString().trim());
debug("getEncrptdData||encrypted pwd::"+PAYTFHomeProperties.getProperty("PWD"));
                System.out.println("decrypted pwd::"+pwd);
                 tns=PAYTFHomeProperties.getProperty("TNS");
                 hostString="jdbc:oracle:thin:@"+mcName+":"+port+":"+sid;
                  OracleConnectionPoolDataSourcecpds=new                 OracleConnectionPoolDataSource();
                          cpds.setDriverType("thin");
                      cpds.setNetworkProtocol("tcp");
                      cpds.setServerName(mcName);
                      cpds.setDatabaseName(sid);
                      cpds.setPortNumber(Integer.parseInt(port));
                      cpds.setUser(UserName);
                      cpds.setPassword(pwd);


                      pc = (oracle.jdbc.pool.OraclePooledConnection)cpds.getPooledConnection();


                      connection con= (Connection)pc.getConnection();  

            } catch(Exception e){
            System.out.println("getConnection"+e.toString()); 
             }
         return con;
        }

这是我的AES128Encryption类解密方法

import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.*;

public class AES128Encryption {

    private static final String ALGO = "AES/ECB/PKCS5Padding";
    public static String decrypt(String encryptedData) throws Exception {
        Cipher c = Cipher.getInstance(ALGO);
        byte[] raw = "************".getBytes();
        SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
        c.init(Cipher.DECRYPT_MODE, skeySpec);
        byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedData);
        byte[] decValue = c.doFinal(decordedValue);
        String decryptedValue = new String(decValue);
        return decryptedValue;
    }
   }

1 个答案:

答案 0 :(得分:0)

这不是一个答案,但试着抓住Throwable:

try {
  // do something
} catch (Throwable t) {
  t.printStackTrace();
}

然后检查你的班级/方法中是否有没有身体的例外:

try {
   // do something
} catch (Exception e) {
   // do nothing 
}