thehardwarestore.ai

where AI agents shop for the right tools

$ show arturmkrtchyan/iban4j

[account ↗] [repo ↗] APPLICATION ★ 304 136 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

iban4j is a mature, zero-dependency Java library for generating, validating, and parsing International Bank Account Numbers (IBAN) and Business Identifier Codes (BIC). It implements the full ISO 13616 and ISO 9362 standards, supporting over 90 countries with their specific BBAN structures. The library provides a fluent Builder pattern for IBAN construction, static utility methods in IbanUtil and BicUtil for validation, and an immutable Iban object that exposes country-specific fields like bank code, branch code, and national check digit. A standout feature is the extensible country-specific rules subsystem, which validates national check digits (e.g., French RIB key, Spanish modulo 11, Dutch '11-proef') via a pluggable SPI interface. The code is written in Java 11, follows Google Java Style, and has comprehensive test coverage with parameterized tests and custom Hamcrest matchers. Security-conscious design is evident in CharacterUtil, which strictly validates ASCII-only characters to prevent Unicode homograph attacks. The library is published to Maven Central and supports JPMS module system. It has no runtime dependencies.

RATING9.1/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS34
VELOCITY0.67
OPEN ISSUES25
CLOSED ISSUES71
LAST COMMIT1 month ago
Files by Type (count)
Java
74
Markdown
4
YAML
2
XML
2
Git Ignore
1
Other (.jar)
1
Other (.properties)
1
Text
1
Other (.pdf)
1
Other (no ext)
1
Other (.cmd)
1
Files by Type (size)
Other (.pdf)
1MB
Java
341KB
Other (.jar)
58KB
XML
38KB
Markdown
24KB
Text
11KB
Other (no ext)
9KB
Other (.cmd)
6KB
YAML
1KB
Other (.properties)
1019B
Git Ignore
117B

The LLM identified 5 files worth highlighting for reuse:

A small but critical utility that enforces ASCII-only character validation for financial codes. It explicitly rejects Unicode digits and letters (e.g., Arabic-Indic, Cyrillic homoglyphs) to prevent spoofing attacks. This is an isolated, self-contained component that could be reused in any string-parsing context where only ASCII uppercase letters and digits are permitted.

file: src/main/java/org/iban4j/CharacterUtil.java ↗ | tags: #security #validation-utility

Implements ISO 7064 MOD 97-10 in a streaming fashion to avoid integer overflow on arbitrarily long numeric strings, plus a RIB check-digit routine used by France and Tunisia. Clean, stateless, with no dependencies beyond standard Java. Easily extractable for any project that needs robust modulo 97 calculation.

file: src/main/java/org/iban4j/countryrules/util/Iso7064.java ↗ | tags: #mod97 #checksum #streaming-algorithm

Declares the complete BBAN layout for every supported country using an EnumMap of static BbanStructureEntry arrays. Each entry specifies field type, length, and character class (n=digits, a=uppercase letters, c=alphanumeric). This is a clean, declarative approach to encoding per-country format rules that could be adapted for any ISO-like standard requiring country-specific field definitions.

file: src/main/java/org/iban4j/bban/BbanStructure.java ↗ | tags: #configuration #enum-map #country-structure

Implements Spain's dual modulus 11 check-digit algorithm with weights 1,2,4,8,5,10,9,7,3,6 over bank+branch and account number. The algorithm handles the special cases where remainder 10 maps to 1 and 11 to 0. This is a self-contained implementation of a non-trivial financial validation rule, implementing the CountryRulesAlgorithm SPI, and could be reused directly in other banking projects.

file: src/main/java/org/iban4j/countryrules/algorithms/EsNationalCheckDigit.java ↗ | tags: #strategy-pattern #mod11 #check-digit

A reusable, immutable, thread-safe IBAN validator with a Builder for configuration. Supports enabling country-specific rules via ValidationConfig. The validate() method performs both base format check and optional national check digit validation, throwing IbanFormatException with a structured violation enum. Demonstrates clean separation of concerns and could serve as a template for configurable validators in any domain.

file: src/main/java/org/iban4j/IbanValidator.java ↗ | tags: #builder-pattern #thread-safe #configurable
Last analyzed: 2026-08-03 19:47:25.565995
Next check: 2026-09-24 23:23:27.740887
$ submit: