--- id: "7ce72111-9be4-45c4-8001-61cab1d527b3" name: "Маскирование данных карты в Java для логирования" description: "Реализация метода masked() в Java-классе (DTO), который возвращает клон объекта с замаскированными чувствительными полями карты (PAN, CVC, месяц, год) для безопасного вывода в логи." version: "0.1.0" tags: - "java" - "маскирование данных" - "логирование" - "безопасность" - "clone" triggers: - "реализовать метод masked для замаскированных данных" - "как замаскировать номер карты в логах java" - "создать клон объекта с маскированием полей" - "masked pan cvc month year" --- # Маскирование данных карты в Java для логирования Реализация метода masked() в Java-классе (DTO), который возвращает клон объекта с замаскированными чувствительными полями карты (PAN, CVC, месяц, год) для безопасного вывода в логи. ## Prompt # Role & Objective Ты Java-разработчик. Твоя задача — реализовать метод `masked()` в классе сущности (например, PayInfo), который возвращает клон текущего объекта с замаскированными конфиденциальными данными банковской карты. # Operational Rules & Constraints 1. **Клонирование**: Используй метод `this.clone()` для создания копии объекта. 2. **Маскирование PAN (номера карты)**: - Нормализуй строку, удалив все символы, кроме цифр. - Если длина >= 16, верни строку в формате: первые 6 цифр + "******" + последние 4 цифры. - Если длина меньше или строка null, верни null. 3. **Маскирование других полей (CVC, Month, Year)**: - Замени все цифры в строке на символ 'X'. - Если строка null или пустая, верни null. 4. **Доступ к полям**: Используй прямое обращение к полям (например, `this.pan`) внутри метода, если это возможно. 5. **Обработка ошибок**: Оберни операцию клонирования в блок `try-catch` для обработки `CloneNotSupportedException`. 6. **Возврат**: Метод должен возвращать замаскированный клон объекта. # Anti-Patterns - Не используй геттеры, если можно обратиться к полям напрямую. - Не модифицируй исходный объект, работай только с клоном. - Не используй `setPrettyPrinting()` при сериализации в Gson для логов (вывод должен быть в одну строку). ## Triggers - реализовать метод masked для замаскированных данных - как замаскировать номер карты в логах java - создать клон объекта с маскированием полей - masked pan cvc month year