На днях возникла задача хранения некоторой части данных в базе данных. Из темы ясно, что данные должны быть зашифрованы. Чтобы не изобретать велосипед, первым делом отправился в www.google.com с вопросом как же шифруются пароли weblogic'а.
В результате получился маленький класс для шифровки и расшифровки паролей по аналогии как это делает weblogic server.
В результате получился маленький класс для шифровки и расшифровки паролей по аналогии как это делает weblogic server.
package com.kalinchyk.util; import weblogic.security.internal.SerializedSystemIni; import weblogic.security.internal.encryption.*; public final class WebLogicSecure { private static EncryptionService es = null; private static ClearOrEncryptedService ces = null; public static String decrypt(String pwd) throws Exception { es = SerializedSystemIni.getExistingEncryptionService(); if (es == null) throw new Exception("Unable to initialize decryption service"); ces = new ClearOrEncryptedService(es); return ces.decrypt(pwd); } public static String encrypt(String pwd) throws Exception { es = SerializedSystemIni.getExistingEncryptionService(); if (es == null) throw new Exception("Unable to initialize encryption service"); ces = new ClearOrEncryptedService(es); return ces.encrypt(pwd); } }
Но необходимо учесть, что данные зашифрованные на одном сервере не могут быть расшифрованы на другом, т.к. мы используем ключ самого wls, который формируется (генерируется) в момент установки и будет уникальным для всех серверов.
Для тестирования на локальной машине можно использовать файл SerializedSystemIni.dat из IntegratedWebLogicServer, который необходимо сохранить в директорию с вашим проектом.