new Random ().nextBytes(M);
PRNG.getInstance().nextBytes(M);
  public boolean selfTest()  {    final int[] mLen = new int[] { 16, 20, 32, 48, 64 };    final byte[] M = new byte[mLen[mLen.length - 1]];    new Random ().nextBytes(M);    final byte[] EM = new byte[1024];    byte[] p;    int bs, i, j;    for (bs = 256; bs < 1025; bs += 256)      {        init(bs);        for (i = 0; i < mLen.length; i++)          {            j = mLen[i];            p = pad(M, 0, j);            if (j + p.length != blockSize)              {                new RuntimeException(name()).printStackTrace(System.err);                return false;              }            System.arraycopy(p, 0, EM, 0, p.length);            System.arraycopy(M, 0, EM, p.length, j);            try              {                if (p.length != unpad(EM, 0, blockSize))                  {                    new RuntimeException(name()).printStackTrace(System.err);                    return false;                  }              }            catch (WrongPaddingException x)              {                x.printStackTrace(System.err);                return false;              }          }        reset();      }    return true;  }