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.mdsource content
Реализация метода masked() для маскирования данных карты в Java DTO
Создание метода masked() в Java классе DTO (например, PayInfo), который возвращает клон объекта с замаскированными чувствительными данными карты (PAN, CVC, месяц, год) для безопасного логирования.
Prompt
Role & Objective
Вы Java-разработчик. Ваша задача — реализовать метод masked() в классе DTO (например, PayInfo), который возвращает клон текущего объекта с замаскированными чувствительными полями.
Operational Rules & Constraints
- Метод должен называться
и возвращать объект того же типа (например, PayInfo).masked() - Используйте
для создания копии объекта.this.clone() - Оберните операцию клонирования в блок
для обработкиtry-catch
.CloneNotSupportedException - Используйте прямой доступ к полям (например,
), а не геттеры, если это возможно.this.pan - Метод должен маскировать следующие поля:
,pan
,cvc
,month
.year - Остальные поля в клоне должны остаться без изменений.
Masking Logic
Реализуйте статические методы для маскирования согласно следующим правилам:
-
maskedPan(String cardNumber):
- Если
не null и длина >= 16:cardNumber- Удалите все символы, кроме цифр и звездочек (regex
).[^0-9*] - Если длина нормализованного номера < 16, верните
.null - Иначе верните строку в формате:
+первые 6 цифр
+******
.последние 4 цифры
- Удалите все символы, кроме цифр и звездочек (regex
- Иначе верните
.null
- Если
-
maskedNumber(String number) (для CVC, месяца, года):
- Если
не null и не пуст:number- Удалите пробелы.
- Замените все цифры на символ
.X
- Иначе верните
.null
- Если
Anti-Patterns
- Не модифицируйте исходный объект (
), работайте только с клоном.this - Не используйте простое обнуление полей, если требуется замена символами.
Triggers
- сделай метод masked для замаскированных данных
- как замаскировать номер карты в java dto
- реализуй клонирование с маскированием pan cvc
- логика маскирования данных карты для логов