SHA384Digest.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-384. <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 SHA384Digest
  16.     extends LongDigest
  17. {
  18. private static final int DIGEST_LENGTH = 48;
  19. /**
  20.  * Standard constructor
  21.  */
  22.     public SHA384Digest()
  23.     {
  24.     }
  25. /**
  26.  * Copy constructor.  This will copy the state of the provided
  27.  * message digest.
  28.  */
  29. public SHA384Digest(SHA384Digest t)
  30. {
  31. super(t);
  32. }
  33.     public String getAlgorithmName()
  34. {
  35. return "SHA-384";
  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.         reset();
  53.         return DIGEST_LENGTH;
  54.     }
  55.     /**
  56.      * reset the chaining variables
  57.      */
  58.     public void reset()
  59.     {
  60.         super.reset();
  61. /* SHA-384 initial hash value
  62.  * The first 64 bits of the fractional parts of the square roots
  63.  * of the 9th through 16th prime numbers
  64.  */
  65. H1 = 0xcbbb9d5dc1059ed8l;
  66. H2 = 0x629a292a367cd507l;
  67. H3 = 0x9159015a3070dd17l;
  68. H4 = 0x152fecd8f70e5939l;
  69. H5 = 0x67332667ffc00b31l;
  70. H6 = 0x8eb44a8768581511l;
  71. H7 = 0xdb0c2e0d64f98fa7l;
  72. H8 = 0x47b5481dbefa4fa4l;
  73.     }
  74. }