Skip to content

A unique string ID generator for Java.

License

Notifications You must be signed in to change notification settings

Soundicly/jnanoid-enhanced

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚠️ 10th of October this library will be moved to https://github.com/wosherco/jnanoid-enhanced, together with the jitpack repo.

JNanoId Enhanced

Jitpack

A unique string ID generator for Java.

Why Fork?

Original JNanoId seems to not be maintained anymore. This fork is to add some features.

Secure

JNanoID uses Java’s SecureRandom to generate cryptographically strong random IDs with a proper distribution of characters.

Compact

JNanoID generates compact IDs with just 21 characters. By using a larger alphabet than UUID, JNanoID can generate a greater number of unique IDs, when compared to UUID, with fewer characters (21 versus 36).

URL-Friendly

JNanoID uses URL-friendly characters (A-Za-z0-9_-). Perfect for unique identifiers in web applications.

Customizable

JNanoID is fully customizable. All default options may be overridden. Supply your own Random Number Generator, alphabet, or size.

Tested

JNanoID is thoroughly tested with JUnit.

Latest Release

The most recent release is JNanoId 2.0.2.

Maven

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.soundicly</groupId>
    <artifactId>jnanoid-enhanced</artifactId>
    <version>main-SNAPSHOT</version>
</dependency>

Gradle

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        mavenCentral()
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    implementation 'com.soundicly:jnanoid-enhanced:main-SNAPSHOT'
}

Usage

JNanoId provides one easy-to-use utility class (NanoIdUtils) with two methods to generate IDs.

Standard IDs - randomNanoId()

The default method creates secure, url-friendly, unique ids. It uses a url-friendly alphabet (A-Za-z0-9_-), a secure random number generator, and generates a unique ID with 21 characters.

String id = NanoIdUtils.randomNanoId(); // "ku-qLNv1wDmIS5_EcT3j7"

Standard IDs with custom length - randomNanoId(size)

An additional method that allows you to generate a secure unique ID with a customizable number of characters.

String id = NanoIdUtils.randomNanoId(5); // "f7Yd4"

Standard IDs with custom alphabet and length - randomNanoId(alphabet, size)

An additional method that allows you to generate a secure unique ID with a customizable alphabet and number of characters.

// Use a custom alphabet containing only a, b, and c
char[] alphabet = {'a','b','c'};

String id = NanoIdUtils.randomNanoId(alphabet, 5); // "accab"

Custom IDs - NanoIdUtils.randomNanoId(random, alphabet, size);

An additional method allows you to generate custom IDs by specifying your own random number generator, alphabet, or size.

// Use a faster, but non-secure, random generator
Random random = new Random();

// Use a custom alphabet containing only a, b, and c
char[] alphabet = {'a','b','c'};

// Make IDs 10 characters long
int size = 10;

String id = NanoIdUtils.randomNanoId(random, alphabet, 10); // "babbcaabcb"

Copyright and license

Original Author: Aventrix LLC.

Code released under the MIT License.

Based on the original NanoId for JavaScript by Andrey Sitnik.

Other Programming Languages

Also, a CLI tool is available to generate IDs from the command line.

About

A unique string ID generator for Java.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages

  • Java 100.0%