У меня возникли проблемы шифруют пароль базы данных в hibernate.cfg.xml
не может зашифровать пароль в конфигурационном файле
Это мой файл свойств.
<!-- Database connection settings -->
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="connection.url">jdbc:sqlserver://localhost:1433;databaseName=TEST;</property>
<property name="connection.username">sa</property>
<!-- Encryption -->
<property name="connection.password">ENC(vMO/j5jfpaU2cUhPVoOk5Q==)</property>
<property name="connection.provider_class">org.jasypt.hibernate4.connectionprovider.EncryptedPasswordDriverManagerConnectionProvider</property>
<property name="connection.encryptor_registered_name">hibernateEncryptor</property>
Тогда в HiberanteUtil.java
я это
// Builds session factory.
private static SessionFactory configureSessionFactory()
throws HibernateException {
Configuration configuration = new Configuration().configure();
StandardPBEStringEncryptor encryptor =
new StandardPBEStringEncryptor();
encryptor.setPassword("pass");
HibernatePBEEncryptorRegistry registry =
HibernatePBEEncryptorRegistry.getInstance();
registry.registerPBEStringEncryptor("hibernateEncryptor", encryptor);
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties()).buildServiceRegistry();
return configuration.buildSessionFactory(serviceRegistry);
}
Я создал зашифрованный пароль с encrypt.bat
.
Тогда ошибка я имею
com.microsoft.sqlserver.jdbc.SQLServerException: Логин потерпело неудачу для потребителя 'са'. ClientConnectionId: 8033573f-5f52-4fe9-A728-fbe4f57d89c4
Если удалить эту часть
StandardPBEStringEncryptor encryptor =
new StandardPBEStringEncryptor();
encryptor.setPassword("someKey");
HibernatePBEEncryptorRegistry registry =
HibernatePBEEncryptorRegistry.getInstance();
registry.registerPBEStringEncryptor(
"hibernateEncryptor", encryptor);
У меня такая же ошибка, так что я думаю, что это не зарегистрирует, но я не знаю, как сделай это.
Это, как я шифровать
UPDATE
Единственное, что я могу сделано, чтобы получить его работы что-то вроде этого, но это не так, как я думаю.
StandardPBEStringEncryptor encryptor =
new StandardPBEStringEncryptor();
encryptor.setPassword("somePass");
encryptor.setAlgorithm("PBEWITHMD5ANDDES");
String pass=encryptor.decrypt("HhpmA/XmJoLro8TYYu4YyA==");
HibernatePBEEncryptorRegistry registry =
HibernatePBEEncryptorRegistry.getInstance();
registry.registerPBEStringEncryptor(
"hibernateEncryptor", encryptor);
Configuration configuration = new Configuration().configure()
.setProperty("hibernate.connection.encryptor_registered_name","hibernateEncryptor")
.setProperty("hibernate.connection.password",pass);
Так я думаю, что проблема с "hibernateEncryptor"
, я думаю, что нужно зарегистрировать
<typedef name="encryptedString" class="org.jasypt.hibernate4.type.EncryptedStringType">
<param name="encryptorRegisteredName">hibernateEncryptor</param>
<typedef>
Но когда я положил его в hibernate.cfg.xml
говорит недействительный отображение, поэтому я добавить его в класс с аннотациями но ничего не происходит, потому что я думаю, что это читается после подключения к базе данных, что я и хочу зашифровать. :(
@TypeDef(name="encryptedString",typeClass=org.jasypt.hibernate4.type.EncryptedStringType.class,
parameters= {@Parameter(name="encryptorRegisteredName",value="hibernateEncryptor")})
Вы можете указать гибернации версию и Jasypt версию? –
@Haim 'hibernate-4.1' и' jasypt 1.9.1'' jasypt-hibernate4-1.91' – nachokk