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

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

Introduction

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

Prototype

public int doFinal(byte[] out, int outOff) 

Source Link

Usage

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);//  ww  w. j  a v a 2  s .c  om
    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./*from  w  w w.  j  a  va 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
 *///w  w w.j  a  v  a 2s . 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.jcryptool.visual.hashing.views.HashingView.java

License:Open Source License

private String computeHash(String hashName, String inputText, Text hashText) {
    hash = hash.getName(hashName);/*from  w ww  . ja v  a2s . co  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;
}