net.i2p.crypto

## Class SHA256Generator

- java.lang.Object
- - net.i2p.crypto.SHA256Generator

-     public final class SHA256Generator
      extends Object

  Defines a wrapper for SHA-256 operation. As of release 0.8.7, uses java.security.MessageDigest by default. If that is unavailable, it uses GNU-Crypto `Sha256Standalone`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SHA256Generator(I2PAppContext context)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Hash` | `calculateHash(byte[] source)` Calculate the SHA-256 hash of the source and cache the result.
    `Hash` | `calculateHash(byte[] source, int start, int len)` Calculate the hash and cache the result.
    `void` | `calculateHash(byte[] source, int start, int len, byte[] out, int outOffset)` Use this if you only need the data, not a Hash object.
    `static SHA256Generator` | `getInstance()`
    `static void` | `main(String[] args)` Test the GNU and the JVM's implementations for speed Results: 2011-05 eeepc Atom

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SHA256Generator

          public SHA256Generator(I2PAppContext context)

      Parameters:
        `context` - unused

  - ### Method Detail

    - #### getInstance

          public static final SHA256Generator getInstance()

    - #### calculateHash

          public final Hash calculateHash(byte[] source)

      Calculate the SHA-256 hash of the source and cache the result.
      Parameters:
        `source` - what to hash
      Returns:
        hash of the source

    - #### calculateHash

          public final Hash calculateHash(byte[] source,
                           int start,
                           int len)

      Calculate the hash and cache the result.

    - #### calculateHash

          public final void calculateHash(byte[] source,
                           int start,
                           int len,
                           byte[] out,
                           int outOffset)

      Use this if you only need the data, not a Hash object. Does not cache.
      Parameters:
        `out` - needs 32 bytes starting at outOffset

    - #### main

          public static void main(String[] args)

      Test the GNU and the JVM's implementations for speed Results: 2011-05 eeepc Atom

            JVM   strlen  GNU ms  JVM  ms
                  Oracle  387       3861   3565
                  Oracle   40        825    635
                  Harmony 387       8082   5158
                  Harmony  40       4137   1753
                  JamVM   387      36301  34100
                  JamVM    40       7022   6016
                  gij     387     125833   4342
                  gij      40      22417    988