Поскольку информационная безопасность становится все более важной проблемой, шифрование конфиденциальных данных становится все более важным в приложениях. Jasypt (Java Simplified Encryption) как инструмент для упрощения шифрования данных в Java-приложениях предоставляет разработчикам удобное и гибкое решение для шифрования. В этой статье будет представлен углубленный анализ того, как работает Jasypt, а также как интегрировать и использовать Jasypt в проектах Spring Boot для защиты конфиденциальной информации.
springboot-jasypt.jpg
Jasypt (Java Simplified Encryption) — это инструмент, предназначенный для упрощения операций шифрования Java. Он предоставляет простой, но мощный способ шифрования и дешифрования данных, позволяя разработчикам легко защищать конфиденциальную информацию в своих приложениях, такую как пароли базы данных, ключи API и т. д.
Jasypt призван упростить операции шифрования и сделать его более удобным для разработчиков. Он использует криптостойкие алгоритмы шифрования и поддерживает несколько алгоритмов шифрования для обеспечения баланса между производительностью и безопасностью. Среди них одной из основных идей Jasypt является шифрование на основе пароля (PBE), которое генерирует ключ шифрования на основе пароля, предоставленного пользователем, а затем использует этот ключ для шифрования и дешифрования данных.
Этот инструмент также представляет концепцию соли, которая повышает безопасность шифрования за счет добавления случайно сгенерированных значений соли, предотвращает получение одних и тех же исходных данных одинаковых результатов в разных процессах шифрования и эффективно противостоит атакам с использованием радужных таблиц.
Джасыптьи Весна Boot имеет естественную посадку и может быть легко интегрирован в Spring. В проекте загрузки,для Разработчик Обеспечивает более удобныйРешения по обеспечению безопасности данных。проходитьJasypt,Разработчик может использоваться без глубокого понимания основного алгоритма шифрования.,Легко защитите свои данные,Делает приложение более надежным и безопасным.
Официальный адрес сайта: http://www.jasypt.org/
Адрес Github: https://github.com/ulisesbocchio/jasypt-spring-boot
Добавьте зависимости в файл pom
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot</artifactId>
<version>3.0.5</version>
</dependency>
Если префикс и суффикс не указаны, формат по умолчанию — ENC(). Внутри скобок находится зашифрованный текст, после чего происходит автоматическое дешифрование.
spring:
# Конфигурация источника данных
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.10.106:3306/xj_doc?characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: ENC(BLC3UQBxshlcA9tnMyJL7w==)
# шифрование Конфигурация
jasypt: encryptor:
# Укажите ключ шифрования. Для производственной среды укажите его в параметрах запуска.
password: 0f7b0a5d-46bc-40fd-b8ed-3181d21d644f
# Укажите алгоритм дешифрования, который должен соответствовать алгоритму, используемому при шифровании.
algorithm: PBEWithMD5AndDES
iv-generator-classname: org.jasypt.iv.NoIvGenerator
# property:
# # Суффикс и суффикс, распознаваемые алгоритмом. По умолчанию используется ENC(). Информация о шифровании, содержащаяся в суффиксе и суффиксе, будет расшифрована с использованием указанного алгоритма.
# prefix: ENC@[
# suffix: ]
Добавьте аннотации в класс запуска@EnableEncryptableProperties
аннотация для включения автоматического дешифрования
@SpringBootApplication
@MapperScan("cn.xj.xjdoc.**.mapper")
@EnableEncryptableProperties //Включаем функцию автоматического дешифрования
public class XjdocApplication {
public static void main(String[] args) {
SpringApplication.run(XjdocApplication.class, args);
}
}
public class JasyptUtil {
public static void main(String[] args){
StandardPBEStringEncryptor standardPBEStringEncryptor =new StandardPBEStringEncryptor();
/*Настройте следующий алгоритм в файле конфигурации*/
standardPBEStringEncryptor.setAlgorithm("PBEWithMD5AndDES");
/*Пароль настроен в файле конфигурации*/
standardPBEStringEncryptor.setPassword("0f7b0a5d-46bc-40fd-b8ed-3181d21d644f");
//шифрование
String jasyptPasswordEN =standardPBEStringEncryptor.encrypt("xj2022");
//Расшифровать
String jasyptPasswordDE =standardPBEStringEncryptor.decrypt(jasyptPasswordEN);
System.out.println("шифрованиепароля:"+jasyptPasswordEN);
System.out.println("Пароль после расшифровки: "+jasyptPasswordDE);
}
}
Размещение значения пароля jasypt в файле конфигурации небезопасно в производственной среде. Мы можем поместить значение пароля в команду запуска и удалить строку конфигурации пароля в файле конфигурации. Команда запуска выглядит следующим образом:
java -Djasypt.encryptor.password=password -jar jasypt-spring-boot-demo-0.0.1-SNAPSHOT.jar
или
java -jar jasypt-spring-boot-demo-0.0.1-SNAPSHOT.jar --jasypt.encryptor.password=password
Являясь простым и мощным инструментом шифрования, Jasypt предоставляет удобное решение для защиты данных для приложений Java. Благодаря интеграции со Spring Boot разработчики могут легко шифровать и расшифровывать конфиденциальную информацию в своих приложениях. В реальных проектах ключевыми шагами для обеспечения безопасности приложений являются выбор подходящих методов шифрования, безопасное хранение паролей и интеграция с такими платформами безопасности, как Spring Security. Я надеюсь, что эта статья поможет читателям глубже понять Jasypt и рационально использовать технологию шифрования в реальных проектах.