Class SHA1Digest

  • All Implemented Interfaces:
    Digest

    public class SHA1Digest
    extends GeneralDigest
    implementation of SHA-1 as outlined in "Handbook of Applied Cryptography", pages 346 - 349. It is interesting to ponder why the, apart from the extra IV, the other difference here from MD5 is the "endienness" of the word processing!
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static int DIGEST_LENGTH  
      private int H1  
      private int H2  
      private int H3  
      private int H4  
      private int H5  
      private int[] X  
      private int xOff  
      private static int Y1  
      private static int Y2  
      private static int Y3  
      private static int Y4  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int doFinal​(byte[] out, int outOff)
      close the digest, producing the final digest value.
      private int f​(int u, int v, int w)  
      private int g​(int u, int v, int w)  
      java.lang.String getAlgorithmName()
      return the algorithm name
      int getDigestSize()
      return the size, in bytes, of the digest produced by this message digest.
      private int h​(int u, int v, int w)  
      protected void processBlock()  
      protected void processLength​(long bitLength)  
      protected void processWord​(byte[] in, int inOff)  
      void reset()
      reset the chaining variables
      private int rotateLeft​(int x, int n)  
      private void unpackWord​(int word, byte[] out, int outOff)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SHA1Digest

        public SHA1Digest()
        Standard constructor
      • SHA1Digest

        public SHA1Digest​(SHA1Digest t)
        Copy constructor. This will copy the state of the provided message digest.
    • Method Detail

      • getAlgorithmName

        public java.lang.String getAlgorithmName()
        Description copied from interface: Digest
        return the algorithm name
        Returns:
        the algorithm name
      • getDigestSize

        public int getDigestSize()
        Description copied from interface: Digest
        return the size, in bytes, of the digest produced by this message digest.
        Returns:
        the size, in bytes, of the digest produced by this message digest.
      • processWord

        protected void processWord​(byte[] in,
                                   int inOff)
        Specified by:
        processWord in class GeneralDigest
      • unpackWord

        private void unpackWord​(int word,
                                byte[] out,
                                int outOff)
      • doFinal

        public int doFinal​(byte[] out,
                           int outOff)
        Description copied from interface: Digest
        close the digest, producing the final digest value. The doFinal call leaves the digest reset.
        Parameters:
        out - the array the digest is to be copied into.
        outOff - the offset into the out array the digest is to start at.
      • f

        private int f​(int u,
                      int v,
                      int w)
      • h

        private int h​(int u,
                      int v,
                      int w)
      • g

        private int g​(int u,
                      int v,
                      int w)
      • rotateLeft

        private int rotateLeft​(int x,
                               int n)