All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.datafaker.providers.base.Hashing Maven / Gradle / Ivy

package net.datafaker.providers.base;

import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @since 0.8.0
 */
public class Hashing extends AbstractProvider {

    protected Hashing(BaseProviders faker) {
        super(faker);
    }

    public String md2() {
        return generateString("MD2", "%032x");
    }

    public String md5() {
        return generateString("MD5", "%032x");
    }

    public String sha1() {
        return generateString("SHA-1", "%040x");
    }

    public String sha384() {
        return generateString("SHA-384", "%096x");
    }

    public String sha256() {
        return generateString("SHA-256", "%064x");
    }

    public String sha512() {
        return generateString("SHA-512", "%0128x");
    }

    private String generateString(String algorithm, String format) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
            String characters = faker.lorem().characters();
            messageDigest.update(characters.getBytes(StandardCharsets.UTF_8), 0, characters.length());
            return format.formatted(new BigInteger(1, messageDigest.digest()));
        } catch (NoSuchAlgorithmException noSuchAlgorithmException) {
            throw new RuntimeException("Failed to generate string using algorithm \"%s\" and format \"%s\""
                .formatted(algorithm, format), noSuchAlgorithmException);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy