К распространенным относятся: пароль пользователя базы данных, пароль пользователя платформы SMS, фиксированный пароль для межсистемной проверки и т. д.
Этот класс инструментов относится к реализации раздела 5.3 книги «Практика разработки корпоративных приложений Spring.3.x».
Полный код и аннотации приведены ниже:
Скопируйте код кода следующим образом:
пакет com.cncounter.util.comm;
импортировать java.security.Key;
импортировать java.security.SecureRandom;
импортировать javax.crypto.Cipher;
импортировать javax.crypto.KeyGenerator;
импортировать sun.misc.BASE64Decoder;
импортировать sun.misc.BASE64Encoder;
общественный класс DESUtils {
// ключ
частный статический ключ-ключ;
// КЛЮЧЕВОЕ семя
частная статическая строка KEY_STR = «[email protected]»;
// постоянный
общедоступная статическая окончательная строка UTF_8 = "UTF-8";
общедоступная статическая окончательная строка DES = "DES";
// статическая инициализация
статический {
пытаться {
// Генератор КЛЮЧЕЙ
Генератор KeyGenerator = KeyGenerator.getInstance(DES);
//Инициализация, безопасный случайный оператор
генератор.init(новый SecureRandom(KEY_STR.getBytes(UTF_8)));
// Генерируем ключ
ключ = генератор.generateKey();
генератор = ноль;
} catch (Исключение е) {
выдать новое RuntimeException(e);
}
}
/**
* Зашифруйте исходную строку и верните зашифрованную строку в кодировке BASE64.
* @param source строка источника, обычный текст
* @return зашифрованная строка
*/
общедоступное статическое кодирование строки (источник строки) {
пытаться {
// Получаем массив байтов в соответствии с форматом кодировки
byte[] sourceBytes = source.getBytes(UTF_8);
// режим шифрования DES
Шифр шифр = Cipher.getInstance(DES);
cipher.init(Cipher.ENCRYPT_MODE, ключ);
//Зашифрованный массив байтов
byte[] encryptSourceBytes = cipher.doFinal(sourceBytes);
// Кодер Base64
BASE64Encoder base64Encoder = новый BASE64Encoder();
вернуть base64Encoder.encode(encryptSourceBytes);
} catch (Исключение е) {
// throw также можно рассматривать как обратный путь
выдать новое RuntimeException(e);
}
}
/**
* Декодируйте/дешифруйте строку, зашифрованную методом encode() этого класса инструмента.
* @param зашифрованная Зашифрованная строка, то есть зашифрованный текст.
* @return простая текстовая строка
*/
общедоступное статическое декодирование строки (строка зашифрована) {
// декодер Base64
BASE64Decoder base64Decoder = новый BASE64Decoder();
пытаться {
// Сначала выполняем декодирование base64
byte[] cryptedBytes = base64Decoder.decodeBuffer(зашифровано);
// режим дешифрования DES
Шифр шифр = Cipher.getInstance(DES);
cipher.init(Cipher.DECRYPT_MODE, ключ);
//Раскодированный массив байтов
byte[] decryptStrBytes = cipher.doFinal(cryptedBytes);
// Преобразуем массив байтов в строку, используя заданный формат кодировки
вернуть новую строку (decryptStrBytes, UTF_8);
} catch (Исключение е) {
// Эта форма действительно подходит для обработки классов инструментов
выдать новое RuntimeException(e);
}
}
// модульный тест
public static void main(String[] args) {
//Строка, которую необходимо зашифровать
Строка электронной почты = "[email protected]";
//шифровать
Зашифрованная строка = DESUtils.encode(электронная почта);
// Расшифровать
Строка расшифрована = DESUtils.decode(зашифрована);
//выводим результат;
System.out.println("электронная почта: " + адрес электронной почты);
System.out.println("зашифровано: " + зашифровано);
System.out.println("расшифровано: " + расшифровано);
System.out.println("email.equals(расшифровано): " + email.equals(расшифровано));
}
}