Хорошо, чтобы разработать более:
В настоящее время вы сопоставляются ваши объекты/классы в базу данных с proterties не шифруется, который выглядит примерно так:
@Entity
общественного класса Person {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
private long id;
частное название строки; }
Если вы планируете выключтель к зашифрованному типа (jasypt) необходимо сначала зашифровать все текущие значения в базе данных с кодом, который выглядит следующим образом:
public class Exec {
public static void main(String[] args) {
SessionFactory sf = HibernateUtil.getSessionFactory(true);
Session session = null;
try {
session = sf.openSession();
//configure the jasypt string encryptor - different type use different encryptors
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setAlgorithm("PBEWithMD5AndDES");
encryptor.setPassword("123456");
encryptor.setKeyObtentionIterations(1000);
encryptor.initialize();
// get all unencrypted data from db and encrypt them - here just the name property of the Person is encrypted.
session.beginTransaction();
List<Person> persons = session.createQuery("select p from Person p").list();
for(Person pers : persons){
pers.setName(encryptor.encrypt(pers.getName()));
session.save(pers);
}
session.getTransaction().commit();
} catch (Exception ex) {
try {
ex.printStackTrace();
session.getTransaction().rollback();
} catch (Exception ex2) {
ex2.printStackTrace();
}
} finally {
session.close();
HibernateUtil.shutdown();
}
}
}
После вы зашифрованы значения, нужно, переключите Person объект использовать зашифрованный тип так:
@org.hibernate.annotations.TypeDefs({
@org.hibernate.annotations.TypeDef(name="EncryptedString",
typeClass=EncryptedStringType.class,
parameters={@Parameter(name="algorithm",value="PBEWithMD5AndDES"),@Parameter(name="password",value="123456"),@Parameter(name="keyObtentionIterations",value="1000")})
})
@Entity
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private long id;
@Type(type="EncryptedString")
private String name;
public long getId() {
return id;
}
// ... getters and setters
}
Убедитесь, что параметры прил ryptors одинаковы в определении и в коде: тот же алгоритм, тот же пароль, тот же самый параметр итерации ключа обрыва. После этого вы можете использовать объект Person как обычно, поскольку шифрование является прозрачным для используемого вами кода сохранения Java.
рабочий пример этого кода вы можете оформить из SVN с помощью этой команды:
SVN Checkout http://hibernate-jasypt-database-encryption.googlecode.com/svn/trunk/ зимуют-jasypt-база-шифрования только для чтения
Удачи!
Спасибо за ответ .. – user3296747
Я хотел бы знать, какую технику шифрования я использую. что то же самое, что и метод шифрования jasypt/как получить старые данные, которые не зашифрованы – user3296747