Package freenet.support.math

Examples of freenet.support.math.MersenneTwister


        if(finalData.length != 32768) {
            // Hash the data
            if(finalData.length != 0)
              md256.update(finalData);
            byte[] digest = md256.digest();
            MersenneTwister mt = new MersenneTwister(digest);
      data = Arrays.copyOf(finalData, 32768);
      Util.randomBytes(mt, data, finalData.length, 32768-finalData.length);
        } else {
          data = finalData;
        }
View Full Code Here


      Rijndael cipher = new Rijndael(bits, bits);
      cipher.initialize(key);
      PCFBMode ctr = PCFBMode.create(cipher);
      ctr.reset(iv);
      byte[] output = new byte[plaintext.length];
      MersenneTwister random = new MersenneTwister(seed);
      int ptr = 0;
      System.arraycopy(plaintext, 0, output, 0, plaintext.length);
      while (ptr < plaintext.length) {
        int max = plaintext.length - ptr;
        int count = (max == 1) ? 1 : (random.nextInt(max - 1) + 1);
        /*ctr.blockEncipher(plaintext, ptr, count, output, ptr);*/
        ctr.blockEncipher(output, ptr, count);
        ptr += count;
      }
      assertTrue(Arrays.equals(output, ciphertext));
      ctr.reset(iv);
      ptr = 0;
      while (ptr < plaintext.length) {
        int max = plaintext.length - ptr;
        int count = (max == 1) ? 1 : (random.nextInt(max - 1) + 1);
        /*ctr.blockDecipher(output, ptr, count, output, ptr);*/
        ctr.blockDecipher(output, ptr, count);
        ptr += count;
      }
      assertTrue(Arrays.equals(output, plaintext));
View Full Code Here

      cipher.initialize(key);
      ctr = PCFBMode.create(cipher);
      ctr.reset(iv);
      byte[] output = new byte[plaintext.length];

      MersenneTwister random = new MersenneTwister(mt.nextLong());
      int ptr = 0;
      System.arraycopy(plaintext, 0, output, 0, plaintext.length);
      while (ptr < plaintext.length) {
        int max = plaintext.length - ptr;
        int count = (max == 1) ? 1 : (random.nextInt(max - 1) + 1);
        //ctr.blockEncipher(plaintext, ptr, count, output, ptr);
        ctr.blockEncipher(output, ptr, count);
        ptr += count;
      }
      assertTrue(Arrays.equals(output, ciphertext));
      // ... and decrypt again, in random pieces.
      ptr = 0;
      ctr.reset(iv);
      while (ptr < plaintext.length) {
        int max = plaintext.length - ptr;
        int count = (max == 1) ? 1 : (random.nextInt(max - 1) + 1);
        //ctr.blockDecipher(output, ptr, count, output, ptr);
        ctr.blockDecipher(output, ptr, count);
        ptr += count;
      }
      assertTrue(Arrays.equals(output, plaintext));
View Full Code Here

   
        @Override
    @SuppressWarnings("cast")
    public void close() throws IOException {
      try {
        Random random = new MersenneTwister(randomSeed);
        synchronized(PaddedEphemerallyEncryptedBucket.this) {
                if(closed) return;
                  if(streamNumber != lastOutputStream) {
                      Logger.normal(this, "Not padding out to length because have been superceded: "+getName());
                      return;
                  }
          long finalLength = paddedLength();
          long padding = finalLength - dataLength;
          int sz = 65536;
          if(padding < (long)sz)
            sz = (int)padding;
          byte[] buf = new byte[sz];
          long writtenPadding = 0;
          while(writtenPadding < padding) {
            int left = (int) Math.min((long) (padding - writtenPadding), (long) buf.length);
            random.nextBytes(buf);
            out.write(buf, 0, left);
            writtenPadding += left;
          }
        }
      } finally {
View Full Code Here

    for(int i=0;i<x;i++)
      filter.put(i, (byte)0);
  }

  protected Random getHashes(byte[] key) {
    return new MersenneTwister(key);
  }
View Full Code Here

      if (compressedData.length != SSKBlock.DATA_LENGTH) {
        // Hash the data
        if (compressedData.length != 0)
          md256.update(compressedData);
        byte[] digest = md256.digest();
        MersenneTwister mt = new MersenneTwister(digest);
        data = Arrays.copyOf(compressedData, SSKBlock.DATA_LENGTH);
        if (compressedData.length > data.length) {
          throw new RuntimeException("compressedData.length = " + compressedData.length + " but data.length="
              + data.length);
        }
View Full Code Here

      long seed = mt.nextLong();
      if (TEST_JCA) {
        SecretKeySpec k = new SecretKeySpec(key, "AES");
        Cipher c = Cipher.getInstance("AES/CTR/NOPADDING", Rijndael.AesCtrProvider);
        c.init(Cipher.ENCRYPT_MODE, k, new IvParameterSpec(iv));
        MersenneTwister random = new MersenneTwister(seed);
        byte[] output = new byte[plaintext.length];
        int inputPtr = 0;
        int outputPtr = 0;
        // Odd API designed for block ciphers etc.
        // For CTR it should be able to return immediately each time.
        // ... Actually, no. BouncyCastle's CTR breaks this assumption.
        // You must handle when update() produce less than was in input.
        while (inputPtr < plaintext.length) {
          int max = plaintext.length - inputPtr;
          int count = (max == 1) ? 1 : (random.nextInt(max - 1) + 1);
          int moved = c.update(plaintext, inputPtr, count, output,
              outputPtr);
          outputPtr += moved;
          inputPtr += count;
        }
        c.doFinal(plaintext, 0, plaintext.length - inputPtr, output,
            outputPtr);
        assertTrue(Arrays.equals(output, ciphertext));
      }

      Rijndael cipher = new Rijndael(bits, 128);
      cipher.initialize(key);
      CTRBlockCipher ctr = new CTRBlockCipher(cipher);
      ctr.init(iv);
      byte[] output = new byte[plaintext.length];
      MersenneTwister random = new MersenneTwister(seed);
      int ptr = 0;
      while (ptr < plaintext.length) {
        int max = plaintext.length - ptr;
        int count = (max == 1) ? 1 : (random.nextInt(max - 1) + 1);
        ctr.processBytes(plaintext, ptr, count, output, ptr);
        ptr += count;
      }
      assertTrue(Arrays.equals(output, ciphertext));
    }
View Full Code Here

      // Now encrypt again, in random pieces.
      cipher.initialize(key);
      ctr = new CTRBlockCipher(cipher);
      ctr.init(iv);
      byte[] output = new byte[plaintext.length];
      MersenneTwister random = new MersenneTwister(mt.nextLong());
      int ptr = 0;
      while (ptr < plaintext.length) {
        int max = plaintext.length - ptr;
        int count = (max == 1) ? 1 : (random.nextInt(max - 1) + 1);
        ctr.processBytes(plaintext, ptr, count, output, ptr);
        ptr += count;
      }
      assertTrue(Arrays.equals(output, ciphertext));
     
View Full Code Here

  public void testSimple() throws IOException {
    final int keys = 10;
    PubkeyStore pk = new PubkeyStore();
    new RAMFreenetStore<DSAPublicKey>(pk, keys);
    DSAGroup group = Global.DSAgroupBigA;
    Random random = new MersenneTwister(1010101);
    HashMap<ByteArrayWrapper, DSAPublicKey> map = new HashMap<ByteArrayWrapper, DSAPublicKey>();
    for(int i=0;i<keys;i++) {
      DSAPrivateKey privKey = new DSAPrivateKey(group, random);
      DSAPublicKey key = new DSAPublicKey(group, privKey);
      byte[] hash = key.asBytesHash();
View Full Code Here

    final int keys = 10;
    PubkeyStore pk = new PubkeyStore();
    new RAMFreenetStore<DSAPublicKey>(pk, keys);
    GetPubkey pubkeys = new SimpleGetPubkey(pk);
    DSAGroup group = Global.DSAgroupBigA;
    Random random = new MersenneTwister(1010101);
    HashMap<ByteArrayWrapper, DSAPublicKey> map = new HashMap<ByteArrayWrapper, DSAPublicKey>();
    for(int i=0;i<keys;i++) {
      DSAPrivateKey privKey = new DSAPrivateKey(group, random);
      DSAPublicKey key = new DSAPublicKey(group, privKey);
      byte[] hash = key.asBytesHash();
View Full Code Here

TOP

Related Classes of freenet.support.math.MersenneTwister

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.