SHA512Digest.java
上传用户:lior1029
上传日期:2013-05-07
资源大小:209k
文件大小:2k
源码类别:

CA认证

开发平台:

Java

  1. package org.bouncycastle.crypto.digests;
  2. import org.bouncycastle.crypto.Digest;
  3. /**
  4.  * Draft FIPS 180-2 implementation of SHA-512. <b>Note:</b> As this is
  5.  * based on a draft this implementation is subject to change.
  6.  *
  7.  * <pre>
  8.  *         block  word  digest
  9.  * SHA-1   512    32    160
  10.  * SHA-256 512    32    256
  11.  * SHA-384 1024   64    384
  12.  * SHA-512 1024   64    512
  13.  * </pre>
  14.  */
  15. public class SHA512Digest
  16.     extends LongDigest
  17. {
  18.     private static final int    DIGEST_LENGTH = 64;
  19. /**
  20.  * Standard constructor
  21.  */
  22.     public SHA512Digest()
  23.     {
  24.     }
  25. /**
  26.  * Copy constructor.  This will copy the state of the provided
  27.  * message digest.
  28.  */
  29. public SHA512Digest(SHA512Digest t)
  30. {
  31. super(t);
  32. }
  33.     public String getAlgorithmName()
  34.     {
  35.         return "SHA-512";
  36.     }
  37.     public int getDigestSize()
  38.     {
  39.         return DIGEST_LENGTH;
  40.     }
  41.     public int doFinal(
  42.         byte[]  out,
  43.         int     outOff)
  44.     {
  45.         finish();
  46.         unpackWord(H1, out, outOff);
  47.         unpackWord(H2, out, outOff + 8);
  48.         unpackWord(H3, out, outOff + 16);
  49.         unpackWord(H4, out, outOff + 24);
  50.         unpackWord(H5, out, outOff + 32);
  51.         unpackWord(H6, out, outOff + 40);
  52.         unpackWord(H7, out, outOff + 48);
  53.         unpackWord(H8, out, outOff + 56);
  54.         reset();
  55.         return DIGEST_LENGTH;
  56.     }
  57.     /**
  58.      * reset the chaining variables
  59.      */
  60.     public void reset()
  61.     {
  62.         super.reset();
  63. /* SHA-512 initial hash value
  64.  * The first 64 bits of the fractional parts of the square roots
  65.  * of the first eight prime numbers
  66.  */
  67. H1 = 0x6a09e667f3bcc908l;
  68. H2 = 0xbb67ae8584caa73bl;
  69. H3 = 0x3c6ef372fe94f82bl;
  70. H4 = 0xa54ff53a5f1d36f1l;
  71. H5 = 0x510e527fade682d1l;
  72. H6 = 0x9b05688c2b3e6c1fl;
  73. H7 = 0x1f83d9abfb41bd6bl;
  74. H8 = 0x5be0cd19137e2179L;
  75.     }
  76. }