Example usage for org.bouncycastle.crypto Digest getAlgorithmName

List of usage examples for org.bouncycastle.crypto Digest getAlgorithmName

Introduction

In this page you can find the example usage for org.bouncycastle.crypto Digest getAlgorithmName.

Prototype

public String getAlgorithmName();

Source Link

Document

return the algorithm name

Usage

From source file:android.core.CryptoTest.java

License:Apache License

/**
 * Processes the two given message digests for the same data and checks
 * the results. Requirement is that the results must be equal, the digest
 * implementations must have the same properties, and the new implementation
 * must be faster than the old one./* w  w  w  . j a  v  a 2s.c  om*/
 * 
 * @param oldDigest The old digest implementation, provided by Bouncy Castle 
 * @param newDigest The new digest implementation, provided by OpenSSL
 */
public void doTestMessageDigest(Digest oldDigest, Digest newDigest) {
    final int ITERATIONS = 10;

    byte[] data = new byte[1024];

    byte[] oldHash = new byte[oldDigest.getDigestSize()];
    byte[] newHash = new byte[newDigest.getDigestSize()];

    Assert.assertEquals("Hash names must be equal", oldDigest.getAlgorithmName(), newDigest.getAlgorithmName());
    Assert.assertEquals("Hash sizes must be equal", oldHash.length, newHash.length);
    Assert.assertEquals("Hash block sizes must be equal", ((ExtendedDigest) oldDigest).getByteLength(),
            ((ExtendedDigest) newDigest).getByteLength());
    for (int i = 0; i < data.length; i++) {
        data[i] = (byte) i;
    }

    long oldTime = 0;
    long newTime = 0;

    for (int j = 0; j < ITERATIONS; j++) {
        long t0 = System.currentTimeMillis();
        for (int i = 0; i < 4; i++) {
            oldDigest.update(data, 0, data.length);
        }
        int oldLength = oldDigest.doFinal(oldHash, 0);
        long t1 = System.currentTimeMillis();

        oldTime = oldTime + (t1 - t0);

        long t2 = System.currentTimeMillis();
        for (int i = 0; i < 4; i++) {
            newDigest.update(data, 0, data.length);
        }
        int newLength = newDigest.doFinal(newHash, 0);
        long t3 = System.currentTimeMillis();

        newTime = newTime + (t3 - t2);

        Assert.assertEquals("Hash sizes must be equal", oldLength, newLength);

        for (int i = 0; i < oldLength; i++) {
            Assert.assertEquals("Hashes[" + i + "] must be equal", oldHash[i], newHash[i]);
        }
    }

    android.util.Log.d("CryptoTest", "Time for " + ITERATIONS + " x old hash processing: " + oldTime + " ms");
    android.util.Log.d("CryptoTest", "Time for " + ITERATIONS + " x new hash processing: " + newTime + " ms");

    // Assert.assertTrue("New hash should be faster", newTime < oldTime);
}

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

License:Open Source License

/**
 * Sets the internal object responsible for digest computation.
 *
 * @param  d  Used for digest computation.
 *///  ww w  .  jav a2 s .c  om
protected void setDigest(final Digest d) {
    this.digest = d;
    this.algorithm = d.getAlgorithmName();
}