Mock Jutsu Core - Java

August 5, 2026 · View on GitHub

Build Maven Central License: MIT Java 17+

Zero-dependency Java library for generating realistic mock data - 390+ types across identity, financial, telecom, health, IoT, cryptography, and more.

Generate all the realistic mock data you need for your Java and Java test projects (Unit Tests, Integration Tests, and Test Automation) with a single library. National IDs, card numbers, IBANs, JWTs, IP addresses, medical records, IoT messages, and more: 390+ data types, zero external dependencies, algorithmically verified outputs.

Java implementation of Mock Jutsu (Python/PyPI).


Installation

Requirements

ToolMinimum Version
Java17+
Maven3.8+
Gradle7.0+

Maven

<dependency>
  <groupId>io.github.altansayan</groupId>
  <artifactId>mockjutsu</artifactId>
  <version>1.0.0</version>
</dependency>

Make sure your pom.xml targets Java 17+:

<properties>
  <maven.compiler.source>17</maven.compiler.source>
  <maven.compiler.target>17</maven.compiler.target>
</properties>

Gradle

implementation 'io.github.altansayan:mockjutsu:1.0.0'

Make sure your build.gradle targets Java 17+:

java {
  sourceCompatibility = JavaVersion.VERSION_17
  targetCompatibility = JavaVersion.VERSION_17
}

Imports

Add these to the top of your Java file. Only include the qualifier enums you actually use.

// ── Core (required) ───────────────────────────────────────────────────────
import static io.github.altansayan.mockjutsu.MockJutsu.*;            // generate(), bulk(), builders + all 390 DataType constants
import static io.github.altansayan.mockjutsu.enums.MockJutsuLocale.*; // TR, US, DE, GB, FR, RU, CA, AU, JP, KR, CN, BR, IN ...

// ── Qualifier enums (add as needed) ──────────────────────────────────────
import static io.github.altansayan.mockjutsu.enums.Network.*;        // VISA, MC, AMEX, TROY, DISCOVER, UNIONPAY, JCB, MAESTRO
import static io.github.altansayan.mockjutsu.enums.Gender.*;         // MALE, FEMALE
import static io.github.altansayan.mockjutsu.enums.HashAlgorithm.*;  // MD5, SHA1, SHA256, SHA512, BLAKE2B
import static io.github.altansayan.mockjutsu.enums.ColorFormat.*;    // HEX, RGB, HSL, NAMED
import static io.github.altansayan.mockjutsu.enums.Carrier.*;        // TURKCELL, VODAFONE, TURK_TELEKOM, ATT, VERIZON, T_MOBILE, O2, DEUTSCHE_TELEKOM
import static io.github.altansayan.mockjutsu.enums.CryptoCurrency.*; // BTC, ETH, SOL, BNB, ADA, XRP, DOT, AVAX, MATIC, LINK
import static io.github.altansayan.mockjutsu.enums.AccountType.*;    // CHECKING, SAVINGS, CURRENT, BUSINESS_CHECKING, MONEY_MARKET, CD, INVESTMENT

Tip: Your IDE (IntelliJ / VS Code) will suggest missing static imports automatically as you type.


Quick Start

String - Dynamic / Scriptable

import io.github.altansayan.mockjutsu.MockJutsu;
import java.util.List;

// Identity
String tckn  = MockJutsu.generate("tckn",  "TR");   // 11-digit Turkish national ID
String ssn   = MockJutsu.generate("ssn",   "US");   // XXX-XX-XXXX
String iban  = MockJutsu.generate("iban",  "DE");   // DE + 20 digits, MOD-97 valid
String email = MockJutsu.generate("email", "TR");

// Card numbers (with network qualifier)
String visa  = MockJutsu.generate("cardnum", "TR", "visa");
String amex  = MockJutsu.generate("cardnum", "TR", "amex");
String troy  = MockJutsu.generate("cardnum", "TR", "troy");

// Bulk
List<String> cards = MockJutsu.bulk("cardnum", "TR", 100);

Enum - Fully Qualified, No Static Imports Needed

import io.github.altansayan.mockjutsu.MockJutsu;
import io.github.altansayan.mockjutsu.enums.DataType;
import io.github.altansayan.mockjutsu.enums.MockJutsuLocale;
import io.github.altansayan.mockjutsu.enums.Network;
import io.github.altansayan.mockjutsu.enums.Gender;

String card  = MockJutsu.generate(DataType.CARDNUM,  MockJutsuLocale.TR, Network.VISA);
String name  = MockJutsu.generate(DataType.FULLNAME, MockJutsuLocale.TR, Gender.MALE);
String iban  = MockJutsu.generate(DataType.IBAN,     MockJutsuLocale.DE);
String tckn  = MockJutsu.generate(DataType.TCKN,     MockJutsuLocale.TR);

Fluent Builder - Type-Safe, IDE Autocomplete

import static io.github.altansayan.mockjutsu.enums.MockJutsuLocale.*;
import static io.github.altansayan.mockjutsu.enums.Network.*;
import static io.github.altansayan.mockjutsu.enums.Gender.*;

// Card number
String card = MockJutsu.cardnum()
    .locale(TR)
    .network(VISA)
    .generate();

// IBAN
String iban = MockJutsu.iban()
    .country(DE)
    .generate();

// Bulk
List<String> ibanList = MockJutsu.iban()
    .locale(TR)
    .bulk(50);

// Full name with gender
String name = MockJutsu.fullname()
    .locale(TR)
    .gender(MALE)
    .generate();

Masker - 1. Mask An Existing Value

// PCI DSS (6-digit BIN visible + last 4)
MockJutsu.masker(DataType.CARDNUM,       "4532015112830366");             // → "4532 01****** 0366"

// ISO/IEC 7812:2017 - 8-digit BIN masking
MockJutsu.masker(DataType.CARDNUM_BIN8,  "4532015112830366");             // → "4532 0151 **** 0366"

// KVKK / GDPR
MockJutsu.masker(DataType.TCKN,         "12345678901");                   // → "12*******01"
MockJutsu.masker(DataType.IBAN,         "TR330006100519786457841326");    // → "TR33 **** **** **** **** 1326"
MockJutsu.masker(DataType.EMAIL,        "john@example.com");              // → "jo***@example.com"
MockJutsu.masker(DataType.PHONE,        "+905321234567");                 // → "+90 *** *** ** 67"
MockJutsu.masker(DataType.ADDRESS_FULL, "Bagdat Caddesi No:45 Kadikoy"); // → "B*** C*** N*** K***"

Masker - 2. Generate + Mask In One Call

// Generates an algorithmically valid value, then masks it - equivalent to CLI --mask flag
MockJutsu.generateMasked(DataType.CARDNUM,       TR); // → "4532 01****** 0366"       (PCI DSS)
MockJutsu.generateMasked(DataType.TCKN,          TR); // → "47*******83"              (KVKK)
MockJutsu.generateMasked(DataType.IBAN,          DE); // → "DE89 **** **** **** 1326" (SEPA)
MockJutsu.generateMasked(DataType.EMAIL,         TR); // → "jo***@example.com"        (GDPR)
MockJutsu.generateMasked(DataType.PHONE,         TR); // → "+90 *** *** ** 67"        (E.164)
MockJutsu.generateMasked(DataType.ADDRESS_FULL,  TR); // → "A*** S*** 1*** K***"      (GDPR)
MockJutsu.generateMasked(DataType.SSN,           US); // → "***-**-6789"              (GLBA)

Supported Types (390+)

CategoryTypes
Identitytckn, ssn, nin, vkn, passport, license, firstname, lastname, fullname, birthdate, age, gender + 30 more
Financialcardnum, iban, cvv3, cvv4, expiry, pin, balance, credit_score, sepa_qr, emv_qr_p2p + 10 more
Bankingswift, bic, sort_code, routing_number, bank_name, iban, micr_line, account_number + 10 more
Telecomimei, imei2, iccid, imsi, msisdn
Healthnhs_number, icd10, npi, blood_type, hl7_message, fhir_patient, dicom_uid
Securitypassword, password_hash, cef_log, x509_cert, pcap_hex, cve_id
Cryptobtc_address, eth_address, mnemonic, tx_hash, block_hash, btc_wallet, eth_wallet, sol_wallet
Marketsisin, cusip, sedol, lei, fix_message, ohlcv_candles, market_tick, forex_pair
Identity (Intl)br_cpf, br_cnpj, in_pan, in_aadhaar, cn_ric, mx_curp, kr_rrn, it_codicefiscale + 30 more
IoTrfid_uid, epc, nfc_uid, mqtt_payload, lora_packet, apdu
Locationlatitude, longitude, timezone, country_code, coordinates
Commerceean13, ean8, upca, isbn13, vin, invoice_number, sku, order_id
Metauuid, jwt, bearertoken, ipv4, ipv6, useragent, mac_address, api_key
Paymentsswift_mt103, pain001, nacha_ach, sepa_mandate, fedwire
Compliancepep_status, aml_risk_rating, kyc_document_type, consent_id, sanctions_hit
Automotivecan_frame, obd2_response, vin
Aviationiata_ticket, pnr_code, imo_number, mrz_td3, mrz_td1
FIDO2/OIDCwebauthn_credential, fido2_assertion, oidc_token, jwks
Otherprometheus_metrics, nmea_gpgga, tle_satellite, ohlcv_candles, quaternion, ubl_invoice

Supported Locales

LocaleLanguageHOW-TO
TRTürkçeView docs
USEnglish (US)View docs
GBEnglish (UK)View docs
DEDeutschView docs
FRFrançaisView docs
RUРусскийView docs

Algorithm Guarantees

AlgorithmStandardStatus
LuhnISO/IEC 7812✅ Verified
IBAN MOD-97ISO 13616✅ Verified
TCKNTurkish MERNİS✅ Verified
NHS Modulo-11UK NHS✅ Verified
EAN-13 checksumGS1✅ Verified
NMEA checksumNMEA 0183✅ Verified
PIN Block Format 0/3ISO 9564✅ Verified
EMV ARQC/IADEMV 4.3✅ Verified
ISO 8583 bitmapISO 8583✅ Verified
ISIN LuhnISO 6166✅ Verified
CUSIP check digitCUSIP✅ Verified
SEDOL check digitLSE✅ Verified
LEI MOD-97ISO 17442✅ Verified
BTC Base58CheckBIP-16✅ Verified
ETH EIP-55EIP-55✅ Verified
MRZ check digitICAO 9303✅ Verified

Changelog

See GitHub Releases for the full version history.

VersionHighlights
1.0.0Initial release - 390+ types, fluent builders, masker, regulation-compliant output


Contributing

Contributions are welcome! To add a new data type or fix a bug:

  1. Fork the repository
  2. Add your generator in the relevant src/main/java/.../generators/ class
  3. Register the type key in Registry.java
  4. Add a test in TypeCoverageTest.java or AlgorithmTest.java
  5. Open a pull request

Please make sure all 1000+ existing tests pass before submitting: mvn test


Generated data is entirely synthetic and for development/testing environments only.

  • Do not submit to real financial, government, or telecom production systems.
  • Generated IBANs, card numbers, and national IDs are mathematically valid but do not belong to real entities.

💝 Support Mock Jutsu

Mock Jutsu is free and open-source. If it saved you hours of test data setup, consider buying me a coffee ☕

"Every cup of coffee = one more data type." 🥷

NetworkAddress
Ξ Ethereum (ETH)0x8D2fF0a795E3a19D41758Cb9b4451C39D528BbAF

This section will be updated with our sponsors.


If mock-jutsu-java saved you from debugging a "valid-looking but broken" test ID, please leave a ⭐!

Released under the MIT License • Copyright © 2026 Altan Sezer Ayan - A.S.A