# Маскирование данных карты в Java для логирования

> Реализация метода masked() в Java-классе (DTO), который возвращает клон объекта с замаскированными чувствительными полями карты (PAN, CVC, месяц, год) для безопасного вывода в логи.

- Skill: `ecnu-icalk/java-5` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/java-5`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/java-5/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/ecnu-icalk/java-5

---


# Маскирование данных карты в 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

