Example usage for org.bouncycastle.crypto.digests MD4Digest MD4Digest

List of usage examples for org.bouncycastle.crypto.digests MD4Digest MD4Digest

Introduction

In this page you can find the example usage for org.bouncycastle.crypto.digests MD4Digest MD4Digest.

Prototype

public MD4Digest() 

Source Link

Document

Standard constructor

Usage

From source file:android.core.CryptoTest.java

License:Apache License

/**
 * Tests the MD4 implementation./*from  w ww . ja  va  2  s  .  co m*/
 */
@MediumTest
public void testMD4() {
    Digest oldDigest = new MD4Digest();
    Digest newDigest = OpenSSLMessageDigest.getInstance("MD4");
    doTestMessageDigest(oldDigest, newDigest);
}

From source file:edu.vt.middleware.crypt.digest.MD4.java

License:Open Source License

/** Creates an uninitialized instance of an MD4 digest. */
public MD4() {
    super(new MD4Digest());
}

From source file:edu.vt.middleware.crypt.digest.MD4.java

License:Open Source License

/**
 * Creates a new MD4 digest that may optionally be initialized with random
 * data.//from w ww.  j ava2  s .  co m
 *
 * @param  randomize  True to randomize initial state of digest, false
 * otherwise.
 *
 * @throws  CryptException  if the algorithm is not available from any
 * provider or the provider is not available in the environment
 */
public MD4(final boolean randomize) throws CryptException {
    super(new MD4Digest());
    if (randomize) {
        setRandomProvider(new SecureRandom());
        setSalt(getRandomSalt());
    }
}

From source file:edu.vt.middleware.crypt.digest.MD4.java

License:Open Source License

/**
 * Creates a new MD4 digest and initializes it with the given salt.
 *
 * @param  salt  Salt data used to initialize digest computation.
 *
 * @throws  CryptException  if the algorithm is not available from any
 * provider or the provider is not available in the environment
 *///from   w  ww  .  j ava2 s.c  om
public MD4(final byte[] salt) throws CryptException {
    super(new MD4Digest());
    setSalt(salt);
}

From source file:HashMe.MD4.java

License:Apache License

public static byte[] Enc(String data) throws Exception {
    byte[] r = data.getBytes();
    MD4Digest d = new MD4Digest();
    d.update(r, 0, r.length);/*from w  ww. j a v a 2 s  .  co m*/
    byte[] o = new byte[d.getDigestSize()];
    d.doFinal(o, 0);
    return Hex.encode(o);
}

From source file:org.alfresco.jlan.client.J2MEPasswordEncryptor.java

License:Open Source License

/**
 * Encrypt the plain text password with the specified encryption key using the specified
 * encryption algorithm.//  w  w w  .ja  v a  2s .  c o m
 *
 * @param plainPwd                   Plaintext password string
 * @param encryptKey byte[]      Encryption key
 * @param alg int                     Encryption algorithm
 * @return byte[]                     Encrypted password
 * @exception NoSuchAlgorithmException   If a required encryption algorithm is not available
 */
public byte[] generateEncryptedPassword(String plainPwd, byte[] encryptKey, int alg)
        throws NoSuchAlgorithmException {

    //   Get the password

    String pwd = plainPwd;
    if (pwd == null)
        pwd = "";

    //   Determine the encryption algorithm

    byte[] encPwd = null;
    MD4Digest md4 = null;
    int len = 0;
    byte[] pwdBytes = null;

    switch (alg) {

    //   LanMan DES encryption

    case LANMAN:
        encPwd = P24(pwd, encryptKey);
        break;

    //   NTLM v1 encryption

    case NTLM1:

        //   Create the MD4 hash

        md4 = new MD4Digest();

        try {
            pwdBytes = pwd.getBytes("UnicodeLittleUnmarked");
        } catch (UnsupportedEncodingException ex) {
        }

        md4.update(pwdBytes, 0, pwdBytes.length);
        byte[] p21 = new byte[21];
        md4.doFinal(p21, 0);

        //   Now use the LM encryption

        encPwd = P24(p21, encryptKey);
        break;

    //   NTLM v2 encryption

    case NTLM2:
        break;

    //   MD4 encryption

    case MD4:

        //   Create the MD4 hash

        md4 = new MD4Digest();
        len = pwd.length();
        pwdBytes = new byte[len * 2];

        for (int i = 0; i < len; i++) {
            char ch = pwd.charAt(i);
            pwdBytes[i * 2] = (byte) ch;
            pwdBytes[i * 2 + 1] = (byte) ((ch >> 8) & 0xFF);
        }

        md4.update(pwdBytes, 0, pwdBytes.length);
        encPwd = new byte[16];
        md4.doFinal(encPwd, 0);
        break;
    }

    //   Return the encrypted password

    return encPwd;
}

From source file:org.alfresco.jlan.client.J2MEPasswordEncryptor.java

License:Open Source License

/**
 * Generate a session key using the specified password and key.
 *
 * @param plainPwd                   Plaintext password string
 * @param encryptKey byte[]      Encryption key
 * @param alg int                     Encryption algorithm
 * @return byte[]                     Encrypted password
 * @exception NoSuchAlgorithmException   If a required encryption algorithm is not available
 *//*from  ww  w  .  ja  v  a 2 s . co m*/
public byte[] generateSessionKey(String plainPwd, byte[] encryptKey, int alg) throws NoSuchAlgorithmException {

    //   Create the session key for the specified algorithm

    byte[] sessKey = null;
    MD4Digest md4 = null;

    String pwd = plainPwd;
    if (pwd == null)
        pwd = "";

    switch (alg) {

    //   NTLM session key

    case NTLM1:

        //   Get the password bytes

        byte[] pwdBytes = new byte[pwd.length() * 2];

        for (int i = 0; i < pwd.length(); i++) {
            char ch = plainPwd.charAt(i);
            pwdBytes[i * 2] = (byte) ch;
            pwdBytes[i * 2 + 1] = (byte) ((ch >> 8) & 0xFF);
        }

        //   Create the MD4 hash

        md4 = new MD4Digest();
        md4.update(pwdBytes, 0, pwdBytes.length);
        byte[] pt1 = new byte[16];
        md4.doFinal(pt1, 0);
        md4.update(pt1, 0, pt1.length);
        sessKey = new byte[40];
        md4.doFinal(sessKey, 0);

        //   Second part of the session key contains the NTLM hashed password

        byte[] ntlmHash = generateEncryptedPassword(plainPwd, encryptKey, NTLM1);
        System.arraycopy(ntlmHash, 0, sessKey, 16, 24);
        break;
    }

    //   Return the session key

    return sessKey;
}

From source file:org.candlepin.util.X509CRLStreamWriter.java

License:Open Source License

protected static Digest createDigest(AlgorithmIdentifier digAlg) throws CryptoException {
    Digest dig;//from   ww  w  .  j a v  a  2 s.  co m

    if (digAlg.getAlgorithm().equals(OIWObjectIdentifiers.idSHA1)) {
        dig = new SHA1Digest();
    } else if (digAlg.getAlgorithm().equals(NISTObjectIdentifiers.id_sha224)) {
        dig = new SHA224Digest();
    } else if (digAlg.getAlgorithm().equals(NISTObjectIdentifiers.id_sha256)) {
        dig = new SHA256Digest();
    } else if (digAlg.getAlgorithm().equals(NISTObjectIdentifiers.id_sha384)) {
        dig = new SHA384Digest();
    } else if (digAlg.getAlgorithm().equals(NISTObjectIdentifiers.id_sha512)) {
        dig = new SHA384Digest();
    } else if (digAlg.getAlgorithm().equals(PKCSObjectIdentifiers.md5)) {
        dig = new MD5Digest();
    } else if (digAlg.getAlgorithm().equals(PKCSObjectIdentifiers.md4)) {
        dig = new MD4Digest();
    } else {
        throw new CryptoException("Cannot recognize digest.");
    }

    return dig;
}

From source file:org.cryptacular.spec.DigestSpec.java

License:Open Source License

/**
 * Creates a new digest instance.//from   w  w  w . j  a v  a  2 s.  c  o m
 *
 * @return  Digest instance.
 */
@Override
public Digest newInstance() {
    final Digest digest;
    if ("GOST3411".equalsIgnoreCase(algorithm)) {
        digest = new GOST3411Digest();
    } else if ("MD2".equalsIgnoreCase(algorithm)) {
        digest = new MD2Digest();
    } else if ("MD4".equalsIgnoreCase(algorithm)) {
        digest = new MD4Digest();
    } else if ("MD5".equalsIgnoreCase(algorithm)) {
        digest = new MD5Digest();
    } else if ("RIPEMD128".equalsIgnoreCase(algorithm) || "RIPEMD-128".equalsIgnoreCase(algorithm)) {
        digest = new RIPEMD128Digest();
    } else if ("RIPEMD160".equalsIgnoreCase(algorithm) || "RIPEMD-160".equalsIgnoreCase(algorithm)) {
        digest = new RIPEMD160Digest();
    } else if ("RIPEMD256".equalsIgnoreCase(algorithm) || "RIPEMD-256".equalsIgnoreCase(algorithm)) {
        digest = new RIPEMD256Digest();
    } else if ("RIPEMD320".equalsIgnoreCase(algorithm) || "RIPEMD-320".equalsIgnoreCase(algorithm)) {
        digest = new RIPEMD320Digest();
    } else if ("SHA1".equalsIgnoreCase(algorithm) || "SHA-1".equalsIgnoreCase(algorithm)) {
        digest = new SHA1Digest();
    } else if ("SHA224".equalsIgnoreCase(algorithm) || "SHA-224".equalsIgnoreCase(algorithm)) {
        digest = new SHA224Digest();
    } else if ("SHA256".equalsIgnoreCase(algorithm) || "SHA-256".equalsIgnoreCase(algorithm)) {
        digest = new SHA256Digest();
    } else if ("SHA384".equalsIgnoreCase(algorithm) || "SHA-384".equalsIgnoreCase(algorithm)) {
        digest = new SHA384Digest();
    } else if ("SHA512".equalsIgnoreCase(algorithm) || "SHA-512".equalsIgnoreCase(algorithm)) {
        digest = new SHA512Digest();
    } else if ("SHA3".equalsIgnoreCase(algorithm) || "SHA-3".equalsIgnoreCase(algorithm)) {
        digest = new SHA3Digest(size);
    } else if ("Tiger".equalsIgnoreCase(algorithm)) {
        digest = new TigerDigest();
    } else if ("Whirlpool".equalsIgnoreCase(algorithm)) {
        digest = new WhirlpoolDigest();
    } else {
        throw new IllegalStateException("Unsupported digest algorithm " + algorithm);
    }
    return digest;
}

From source file:org.jcryptool.visual.hashing.views.HashingView.java

License:Open Source License

private String computeHash(String hashName, String inputText, Text hashText) {
    hash = hash.getName(hashName);/*from   ww  w .  j a v  a 2  s . c  o m*/
    byte[] digest = null;
    switch (hash) {
    case MD2:
        MD2Digest md2 = new MD2Digest();
        md2.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[md2.getDigestSize()];
        md2.doFinal(digest, 0);

        break;
    case MD4:
        MD4Digest md4 = new MD4Digest();
        md4.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[md4.getDigestSize()];
        md4.doFinal(digest, 0);

        break;
    case MD5:
        MD5Digest md5 = new MD5Digest();
        md5.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[md5.getDigestSize()];
        md5.doFinal(digest, 0);

        break;
    case SHA1:
        SHA1Digest sha1 = new SHA1Digest();
        sha1.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[sha1.getDigestSize()];
        sha1.doFinal(digest, 0);

        break;
    case SHA256:
        SHA256Digest sha256 = new SHA256Digest();
        sha256.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[sha256.getDigestSize()];
        sha256.doFinal(digest, 0);

        break;
    case SHA512:
        SHA512Digest sha512 = new SHA512Digest();
        sha512.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[sha512.getDigestSize()];
        sha512.doFinal(digest, 0);

        break;
    case SHA3_224:
        SHA3.Digest224 sha3_224 = new SHA3.Digest224();
        sha3_224.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[sha3_224.getDigestLength()];
        digest = sha3_224.digest();

        break;
    case SHA3_256:
        SHA3.Digest256 sha3_256 = new SHA3.Digest256();
        sha3_256.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[sha3_256.getDigestLength()];
        digest = sha3_256.digest();

        break;
    case SHA3_384:
        SHA3.Digest384 sha3_384 = new SHA3.Digest384();
        sha3_384.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[sha3_384.getDigestLength()];
        digest = sha3_384.digest();

        break;
    case SHA3_512:
        SHA3.Digest512 sha3_512 = new SHA3.Digest512();
        sha3_512.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[sha3_512.getDigestLength()];
        digest = sha3_512.digest();

        break;
    case SKEIN_256:
        Skein.Digest_256_256 skein_256 = new Skein.Digest_256_256();
        skein_256.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[skein_256.getDigestLength()];
        digest = skein_256.digest();

        break;
    case SKEIN_512:
        Skein.Digest_512_512 skein_512 = new Skein.Digest_512_512();
        skein_512.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[skein_512.getDigestLength()];
        digest = skein_512.digest();

        break;
    case SKEIN_1024:
        Skein.Digest_1024_1024 skein_1024 = new Skein.Digest_1024_1024();
        skein_1024.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[skein_1024.getDigestLength()];
        digest = skein_1024.digest();

        break;
    case RIPEMD160:
        RIPEMD160Digest ripemd160 = new RIPEMD160Digest();
        ripemd160.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[ripemd160.getDigestSize()];
        ripemd160.doFinal(digest, 0);

        break;
    case SM3:
        SM3Digest sm3 = new SM3Digest();
        sm3.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[sm3.getDigestSize()];
        sm3.doFinal(digest, 0);

        break;
    case TIGER:
        TigerDigest tiger = new TigerDigest();
        tiger.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[tiger.getDigestSize()];
        tiger.doFinal(digest, 0);

        break;
    case GOST3411:
        GOST3411Digest gost3411 = new GOST3411Digest();
        gost3411.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[gost3411.getDigestSize()];
        gost3411.doFinal(digest, 0);

        break;
    case WHIRLPOOL:
        WhirlpoolDigest whirlpool = new WhirlpoolDigest();
        whirlpool.update(inputText.getBytes(), 0, inputText.getBytes().length);
        digest = new byte[whirlpool.getDigestSize()];
        whirlpool.doFinal(digest, 0);

        break;
    default:
        break;
    }

    String hashHexValue = new String(Hex.encode(digest));
    if (btnHexadezimal.getSelection()) {
        String hashValueOutput = hashHexValue.toUpperCase().replaceAll(".{2}", "$0 "); //$NON-NLS-1$ //$NON-NLS-2$
        hashText.setText(hashValueOutput);
    } else if (btnDezimal.getSelection()) {
        String hashValue = hexToDecimal(hashHexValue);
        hashValue = hashValue.replaceAll(".{3}", "$0 "); //$NON-NLS-1$ //$NON-NLS-2$
        hashText.setText(hashValue);
    } else if (btnBinary.getSelection()) {
        String hashValue = hexToBinary(hashHexValue);
        hashValue = hashValue.replaceAll(".{8}", "$0#"); //$NON-NLS-1$ //$NON-NLS-2$
        hashText.setText(hashValue);
    }

    return hashHexValue;
}