Save This Page
Home » openjdk-7 » com.sun.crypto » provider » [javadoc | source]
    1   /*
    2    * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved.
    3    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    4    *
    5    * This code is free software; you can redistribute it and/or modify it
    6    * under the terms of the GNU General Public License version 2 only, as
    7    * published by the Free Software Foundation.  Oracle designates this
    8    * particular file as subject to the "Classpath" exception as provided
    9    * by Oracle in the LICENSE file that accompanied this code.
   10    *
   11    * This code is distributed in the hope that it will be useful, but WITHOUT
   12    * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   13    * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   14    * version 2 for more details (a copy is included in the LICENSE file that
   15    * accompanied this code).
   16    *
   17    * You should have received a copy of the GNU General Public License version
   18    * 2 along with this work; if not, write to the Free Software Foundation,
   19    * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   20    *
   21    * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   22    * or visit www.oracle.com if you need additional information or have any
   23    * questions.
   24    */
   25   
   26   package com.sun.crypto.provider;
   27   
   28   import java.security.InvalidKeyException;
   29   
   30   /**
   31    * This is the internal Blowfish class responsible for encryption and
   32    * decryption of a byte array of size <code>BLOWFISH_BLOCK_SIZE</code>.
   33    *
   34    * @author Jan Luehe
   35    * @author David Brownell
   36    *
   37    * @see BlowfishCipher
   38    */
   39   
   40   final class BlowfishCrypt extends SymmetricCipher
   41           implements BlowfishConstants {
   42   
   43       /*
   44        * Are we encrypting or decrypting?
   45        */
   46       private boolean decrypting = false;
   47   
   48       /**
   49        * Gets this cipher's block size.
   50        *
   51        * @return this cipher's block size
   52        */
   53       int getBlockSize() {
   54           return BLOWFISH_BLOCK_SIZE;
   55       }
   56   
   57       void init(boolean decrypting, String algorithm, byte[] rawKey)
   58               throws InvalidKeyException {
   59           this.decrypting = decrypting;
   60           if (!algorithm.equalsIgnoreCase("Blowfish")) {
   61               throw new InvalidKeyException("Wrong algorithm: Blowfish required");
   62           }
   63           if (rawKey.length > BLOWFISH_MAX_KEYSIZE) {
   64               throw new InvalidKeyException("Key too long (> 448 bits)");
   65           }
   66           // Step 1: Init P and then S arrays from pi bytes
   67           int i, j, count;
   68   
   69           System.arraycopy(pi, 0, p, 0, 18);
   70           System.arraycopy(pi, 18, s0, 0, 256);
   71           System.arraycopy(pi, 18 + 256, s1, 0, 256);
   72           System.arraycopy(pi, 18 + 512, s2, 0, 256);
   73           System.arraycopy(pi, 18 + 768, s3, 0, 256);
   74   
   75           // Step 2: XOR all parts of P with key data
   76           int tmp = 0;
   77           int nLen = rawKey.length;
   78           int nKeyPos = 0;
   79           for (i = 0; i < 18; i++) {
   80               for (j = 0; j < 4; j++) {
   81                   tmp <<= 8;
   82                   tmp |= 0x0ff & rawKey[nKeyPos];
   83                   if (++nKeyPos == nLen) nKeyPos = 0;
   84               }
   85               p[i] ^= tmp;
   86           }
   87   
   88           // Steps 3-7: Replace all P, S values with computed values
   89           int[] data = new int[2];
   90   
   91           for (i = 0; i < 18; i+=2) {
   92               encryptBlock(data);
   93               p[i] = data[0];
   94               p[i+1] = data[1];
   95           }
   96   
   97           for (j = 0; j < 256; j+=2) {
   98               encryptBlock(data);
   99               s0[j] = data[0];
  100               s0[j+1] = data[1];
  101           }
  102           for (j = 0; j < 256; j+=2) {
  103               encryptBlock(data);
  104               s1[j] = data[0];
  105               s1[j+1] = data[1];
  106           }
  107           for (j = 0; j < 256; j+=2) {
  108               encryptBlock(data);
  109               s2[j] = data[0];
  110               s2[j+1] = data[1];
  111           }
  112           for (j = 0; j < 256; j+=2) {
  113               encryptBlock(data);
  114               s3[j] = data[0];
  115               s3[j+1] = data[1];
  116           }
  117       }
  118   
  119       /**
  120        * Performs encryption operation.
  121        *
  122        * <p>The input plain text <code>plain</code>, starting at
  123        * <code>plainOffset</code> and ending at
  124        * <code>(plainOffset + len - 1)</code>, is encrypted.
  125        * The result is stored in <code>cipher</code>, starting at
  126        * <code>cipherOffset</code>.
  127        *
  128        * <p>The subclass that implements Cipher should ensure that
  129        * <code>init</code> has been called before this method is called.
  130        *
  131        * @param plain the buffer with the input data to be encrypted
  132        * @param plainOffset the offset in <code>plain</code>
  133        * @param plainLen the length of the input data
  134        * @param cipher the buffer for the result
  135        * @param cipherOffset the offset in <code>cipher</code>
  136        */
  137       void encryptBlock(byte[] plain, int plainOffset,
  138                    byte[] cipher, int cipherOffset)
  139       {
  140           cipherBlock(plain, plainOffset, cipher, cipherOffset);
  141       }
  142   
  143       /**
  144        * Performs decryption operation.
  145        *
  146        * <p>The input cipher text <code>cipher</code>, starting at
  147        * <code>cipherOffset</code> and ending at
  148        * <code>(cipherOffset + len - 1)</code>, is decrypted.
  149        * The result is stored in <code>plain</code>, starting at
  150        * <code>plainOffset</code>.
  151        *
  152        * <p>The subclass that implements Cipher should ensure that
  153        * <code>init</code> has been called before this method is called.
  154        *
  155        * @param cipher the buffer with the input data to be decrypted
  156        * @param cipherOffset the offset in <code>cipherOffset</code>
  157        * @param cipherLen the length of the input data
  158        * @param plain the buffer for the result
  159        * @param plainOffset the offset in <code>plain</code>
  160        */
  161       void decryptBlock(byte[] cipher, int cipherOffset,
  162                    byte[] plain, int plainOffset)
  163       {
  164           cipherBlock(cipher, cipherOffset, plain, plainOffset);
  165       }
  166   
  167       /**
  168        * Encrypts, or decrypts, the blocks of data passed in.
  169        */
  170       private void cipherBlock(byte[] in, int inOffset,
  171                                  byte[] out, int outOffset) {
  172           temp[0] = ((in[inOffset    ]       ) << 24) |
  173                     ((in[inOffset + 1] & 0xff) << 16) |
  174                     ((in[inOffset + 2] & 0xff) <<  8) |
  175                     ((in[inOffset + 3] & 0xff)      );
  176   
  177           temp[1] = ((in[inOffset + 4]       ) << 24) |
  178                     ((in[inOffset + 5] & 0xff) << 16) |
  179                     ((in[inOffset + 6] & 0xff) <<  8) |
  180                     ((in[inOffset + 7] & 0xff)      );
  181   
  182           if (decrypting) {
  183               decryptBlock(temp);
  184           } else {
  185               encryptBlock(temp);
  186           }
  187   
  188           int t = temp[0];
  189           out[outOffset    ] = (byte)(t >> 24);
  190           out[outOffset + 1] = (byte)(t >> 16);
  191           out[outOffset + 2] = (byte)(t >>  8);
  192           out[outOffset + 3] = (byte)(t      );
  193   
  194           t = temp[1];
  195           out[outOffset + 4] = (byte)(t >> 24);
  196           out[outOffset + 5] = (byte)(t >> 16);
  197           out[outOffset + 6] = (byte)(t >>  8);
  198           out[outOffset + 7] = (byte)(t      );
  199       }
  200   
  201       /**
  202        * Encrypts a single block, in place.
  203        */
  204       private void encryptBlock(int[] value) {
  205           int left = value[0];
  206           int right = value[1];
  207   
  208           left ^= p[0];
  209   
  210           right ^= F(left) ^ p[1];
  211           left ^= F(right) ^ p[2];
  212           right ^= F(left) ^ p[3];
  213           left ^= F(right) ^ p[4];
  214   
  215           right ^= F(left) ^ p[5];
  216           left ^= F(right) ^ p[6];
  217           right ^= F(left) ^ p[7];
  218           left ^= F(right) ^ p[8];
  219   
  220           right ^= F(left) ^ p[9];
  221           left ^= F(right) ^ p[10];
  222           right ^= F(left) ^ p[11];
  223           left ^= F(right) ^ p[12];
  224   
  225           right ^= F(left) ^ p[13];
  226           left ^= F(right) ^ p[14];
  227           right ^= F(left) ^ p[15];
  228           left ^= F(right) ^ p[16];
  229   
  230           right ^= p[17];
  231   
  232           value[0] = right;
  233           value[1] = left;
  234       }
  235   
  236       /**
  237        * Decrypts a single block, in place.
  238        */
  239       private void decryptBlock(int[] value) {
  240           int left = value[1];
  241           int right = value[0];
  242   
  243           right ^= p[17];
  244   
  245           left ^= p[16] ^ F(right);
  246           right ^= p[15] ^ F(left);
  247           left ^= p[14] ^ F(right);
  248           right ^= p[13] ^ F(left);
  249   
  250           left ^= p[12] ^ F(right);
  251           right ^= p[11] ^ F(left);
  252           left ^= p[10] ^ F(right);
  253           right ^= p[9] ^ F(left);
  254   
  255           left ^= p[8] ^ F(right);
  256           right ^= p[7] ^ F(left);
  257           left ^= p[6] ^ F(right);
  258           right ^= p[5] ^ F(left);
  259   
  260           left ^= p[4] ^ F(right);
  261           right ^= p[3] ^ F(left);
  262           left ^= p[2] ^ F(right);
  263           right ^= p[1] ^ F(left);
  264   
  265           left ^= p[0];
  266   
  267           value[0] = left;
  268           value[1] = right;
  269       }
  270   
  271       /**
  272        * Calculates the S-Box function F().
  273        *
  274        * This gets used "rounds" times on each encryption/decryption.
  275        */
  276       private int F(int v) {
  277           return ((  s0[ v >>> 24        ]
  278                    + s1[(v  >> 16) & 0xff])
  279                    ^ s2[(v  >>  8) & 0xff])
  280                    + s3[ v         & 0xff];
  281       }
  282   
  283       private final int[] p = new int[18]; // subkeys
  284       private final int[] s0 = new int[256]; // s-boxes
  285       private final int[] s1 = new int[256];
  286       private final int[] s2 = new int[256];
  287       private final int[] s3 = new int[256];
  288       private final int[] temp = new int[2]; // to avoid encrypt/decrypt mallocs
  289   
  290       // many digits of pi, for initializing p and s
  291       private static final int[] pi = {
  292   
  293           // p [rounds + 2]
  294           0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
  295           0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
  296           0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
  297           0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
  298           0x9216d5d9, 0x8979fb1b,
  299   
  300           // s [4][256]
  301           0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
  302           0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,
  303           0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
  304           0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
  305           0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
  306           0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
  307           0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,
  308           0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,
  309           0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
  310           0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
  311           0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,
  312           0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
  313           0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,
  314           0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,
  315           0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
  316           0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,
  317           0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,
  318           0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
  319           0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,
  320           0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
  321           0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
  322           0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,
  323           0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,
  324           0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
  325           0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
  326           0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,
  327           0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
  328           0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,
  329           0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,
  330           0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
  331           0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,
  332           0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,
  333           0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
  334           0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,
  335           0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
  336           0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
  337           0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,
  338           0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,
  339           0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
  340           0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
  341           0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,
  342           0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
  343           0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,
  344           0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,
  345           0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
  346           0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,
  347           0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,
  348           0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
  349           0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,
  350           0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
  351           0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
  352           0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,
  353           0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,
  354           0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
  355           0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
  356           0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,
  357           0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
  358           0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,
  359           0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,
  360           0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
  361           0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,
  362           0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,
  363           0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
  364           0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a,
  365           0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
  366           0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
  367           0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
  368           0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,
  369           0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
  370           0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
  371           0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,
  372           0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
  373           0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
  374           0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,
  375           0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
  376           0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
  377           0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,
  378           0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
  379           0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
  380           0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
  381           0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
  382           0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
  383           0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,
  384           0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
  385           0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
  386           0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,
  387           0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
  388           0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
  389           0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,
  390           0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
  391           0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
  392           0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,
  393           0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
  394           0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
  395           0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
  396           0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
  397           0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
  398           0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,
  399           0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
  400           0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
  401           0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,
  402           0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
  403           0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
  404           0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,
  405           0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
  406           0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
  407           0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,
  408           0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
  409           0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
  410           0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
  411           0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
  412           0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
  413           0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,
  414           0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
  415           0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
  416           0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,
  417           0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
  418           0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
  419           0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,
  420           0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
  421           0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
  422           0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,
  423           0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
  424           0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
  425           0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
  426           0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
  427           0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
  428           0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7,
  429           0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
  430           0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
  431           0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
  432           0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
  433           0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,
  434           0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
  435           0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
  436           0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,
  437           0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
  438           0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
  439           0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,
  440           0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
  441           0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
  442           0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,
  443           0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
  444           0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
  445           0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
  446           0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
  447           0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
  448           0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,
  449           0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
  450           0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
  451           0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,
  452           0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
  453           0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
  454           0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,
  455           0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
  456           0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
  457           0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,
  458           0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
  459           0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
  460           0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
  461           0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
  462           0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
  463           0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,
  464           0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
  465           0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
  466           0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,
  467           0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
  468           0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
  469           0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,
  470           0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
  471           0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
  472           0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,
  473           0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
  474           0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
  475           0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
  476           0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
  477           0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
  478           0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,
  479           0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
  480           0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
  481           0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,
  482           0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
  483           0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
  484           0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,
  485           0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
  486           0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
  487           0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,
  488           0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
  489           0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
  490           0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
  491           0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
  492           0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0,
  493           0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,
  494           0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,
  495           0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
  496           0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,
  497           0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,
  498           0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
  499           0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,
  500           0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
  501           0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
  502           0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,
  503           0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,
  504           0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
  505           0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
  506           0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,
  507           0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
  508           0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,
  509           0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,
  510           0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
  511           0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,
  512           0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,
  513           0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
  514           0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,
  515           0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
  516           0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
  517           0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,
  518           0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,
  519           0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
  520           0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
  521           0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,
  522           0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
  523           0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,
  524           0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,
  525           0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
  526           0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,
  527           0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,
  528           0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
  529           0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,
  530           0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
  531           0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
  532           0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,
  533           0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,
  534           0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
  535           0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
  536           0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,
  537           0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
  538           0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,
  539           0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,
  540           0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
  541           0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,
  542           0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,
  543           0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
  544           0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,
  545           0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
  546           0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
  547           0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,
  548           0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,
  549           0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
  550           0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
  551           0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,
  552           0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
  553           0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
  554           0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,
  555           0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
  556           0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,
  557       };
  558   }

Save This Page
Home » openjdk-7 » com.sun.crypto » provider » [javadoc | source]