作者kevindd (gg)
看板java
标题[问题] hibernate+jasypt在cfg.xml加密
时间Wed Feb 6 21:13:25 2013
我想在hibernate.cfg.xml的password进行加密
但是使用jasypt api後出现问题
错误讯息Could not obtain connection to query metadata :
User 's password is not correct
for the database server.
hibernate.cfg.xml的password从ENC(wxaBcN45KWo+65oABXmGBQ==)
改回原来未加密的password可以连线成功
加密後的字串也没打错问题
因为手动载入也可以连线成功
//手动载入加密字串程式片段
...
BasicTextEncryptor bte = new BasicTextEncryptor();
bte.setPassword("common");
confAffil.configure("informixAffil.cfg.xml");
//加密字串decode後 载入
confAffil.setProperty("hibernate.connection.password",
bte.decrypt("wxaBcN45KWo+65oABXmGBQ=="));
...
我看官网说明
Hibernate is told about which is the encryptor object
to be used for decrypting the encrypted parameters.
This encryptor object should have been registered beforehand
as a Hibernate Encryptor,
as explained in the 'Transparent data encryption' section.
但是我的程式是不是jasypt api的使用步骤有问题?
希望能给些意见
MainSession.java
public class MainSession {
...
//产生hibernate session
static {
try {
Configuration confAffil = new Configuration();
/*
*以下为jasypt的使用步骤
*/
StandardPBEStringEncryptor strongEncryptor
= new StandardPBEStringEncryptor();
strongEncryptor.setPassword("common");
HibernatePBEEncryptorRegistry registry
= HibernatePBEEncryptorRegistry.getInstance();
registry.registerPBEStringEncryptor(
"configurationHibernateEncryptor",strongEncryptor);
//load cfg
confAffil.configure("hibernate.cfg.xml");
serviceRegistry1 = new ServiceRegistryBuilder()
.applySettings(confAffil.getProperties()).buildServiceRegistry();
factoryAffil =
confAffil.buildSessionFactory(serviceRegistry1);
}catch (Throwable ex) {
System.err.println("Failed to create session." + ex);
throw new ExceptionInInitializerError(ex);
}
}
...
}
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"
http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory >
<property name=" hibernate.transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</property>
<property name="connection.provider_class">
org.jasypt.hibernate4.connectionprovider.
EncryptedPasswordDriverManagerConnectionProvider
</property>
<property name="connection.encryptor_registered_name">
configurationHibernateEncryptor
</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">
ENC(wxaBcN45KWo+65oABXmGBQ==)</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/reportsdb;</property>
<property name="hibernate.connection.username">user</property>
<mapping resource="Amsspf1.hbm.xml"/>
</session-factory>
</hibernate-configuration>
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.250.164.183
1F:→ eieio:直接把密码放公开版不太好吧 02/07 00:38