AutoSkill Реализация метода masked() для маскирования данных карты в Java DTO

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

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt3.5_8/реализация-метода-masked-для-маскирования-данных-карты-в-java-dt" ~/.claude/skills/ecnu-icalk-autoskill-masked-java-dto && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt3.5_8/реализация-метода-masked-для-маскирования-данных-карты-в-java-dt/SKILL.md
source content

Реализация метода 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
  • логика маскирования данных карты для логов