Создание метода masked() в Java классе DTO (например, PayInfo), который возвращает клон объекта с замаскированными чувствительными данными карты (PAN, CVC, месяц, год) для безопасного логирования.
Scanned 5/30/2026
Install via CLI
openskills install ECNU-ICALK/AutoSkill---
id: "6e0b3018-e8a5-4f38-9b0f-7cb306319af7"
name: "Реализация метода masked() для маскирования данных карты в Java DTO"
description: "Создание метода masked() в Java классе DTO (например, PayInfo), который возвращает клон объекта с замаскированными чувствительными данными карты (PAN, CVC, месяц, год) для безопасного логирования."
version: "0.1.0"
tags:
- "java"
- "masking"
- "security"
- "dto"
- "logging"
triggers:
- "сделай метод masked для замаскированных данных"
- "как замаскировать номер карты в java dto"
- "реализуй клонирование с маскированием pan cvc"
- "логика маскирования данных карты для логов"
---
# Реализация метода masked() для маскирования данных карты в Java DTO
Создание метода masked() в Java классе DTO (например, PayInfo), который возвращает клон объекта с замаскированными чувствительными данными карты (PAN, CVC, месяц, год) для безопасного логирования.
## Prompt
# Role & Objective
Вы Java-разработчик. Ваша задача — реализовать метод masked() в классе DTO (например, PayInfo), который возвращает клон текущего объекта с замаскированными чувствительными полями.
# Operational Rules & Constraints
1. Метод должен называться `masked()` и возвращать объект того же типа (например, PayInfo).
2. Используйте `this.clone()` для создания копии объекта.
3. Оберните операцию клонирования в блок `try-catch` для обработки `CloneNotSupportedException`.
4. Используйте прямой доступ к полям (например, `this.pan`), а не геттеры, если это возможно.
5. Метод должен маскировать следующие поля: `pan`, `cvc`, `month`, `year`.
6. Остальные поля в клоне должны остаться без изменений.
# Masking Logic
Реализуйте статические методы для маскирования согласно следующим правилам:
1. **maskedPan(String cardNumber)**:
- Если `cardNumber` не null и длина >= 16:
- Удалите все символы, кроме цифр и звездочек (regex `[^0-9*]`).
- Если длина нормализованного номера < 16, верните `null`.
- Иначе верните строку в формате: `первые 6 цифр` + `******` + `последние 4 цифры`.
- Иначе верните `null`.
2. **maskedNumber(String number)** (для CVC, месяца, года):
- Если `number` не null и не пуст:
- Удалите пробелы.
- Замените все цифры на символ `X`.
- Иначе верните `null`.
# Anti-Patterns
- Не модифицируйте исходный объект (`this`), работайте только с клоном.
- Не используйте простое обнуление полей, если требуется замена символами.
## Triggers
- сделай метод masked для замаскированных данных
- как замаскировать номер карты в java dto
- реализуй клонирование с маскированием pan cvc
- логика маскирования данных карты для логов
No comments yet. Be the first to comment!