Java 类org.bouncycastle.crypto.DataLengthException 实例源码

项目:CryptoKnight    文件:Main.java   
public static void main(String[] args) throws InvalidKeyException, DataLengthException, NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException, IllegalStateException, InvalidCipherTextException
    {

        try 
        {
            UIManager.setLookAndFeel("com.pagosoft.plaf.PgsLookAndFeel");
        }

        catch (Exception e)
        {
            ;
        }
        GUI MainGUI = new GUI();
        MainGUI.ConstructGUI();

//      String CT = TextEncrypt.CBCDecrypt("8mjf2sqScPChi5lJQut6U5phB6IW8ze90WdqDm+ulLU1NWI2ODZlYzVmMjYxYTA5", "secret", 256, 0, "Q");
//      
//      System.out.println(CT);

    }
项目:CryptoKnight    文件:FileEncrypt.java   
public static String CBCEncrypt(int alg, int KeySize, String inFile, String pwd, String mode) throws NoSuchAlgorithmException, InvalidKeySpecException, DataLengthException, IllegalStateException, InvalidCipherTextException, IOException, InvalidKeyException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException
{
    String res = "";

    byte[] plain = loadFile(inFile);

    Encryptor enc = new Encryptor();
    enc.setParameters(KeySize, alg);
    enc.setEncParameters(alg, pwd, KeySize, mode);
    byte[] bytesRes = enc.CBCEncrypt(plain, alg);

    save2File(inFile + ".enc", bytesRes);

    res = "Done! file contents encrypted and saved to a corresponding enc file!"; 
    return res;
}
项目:CryptoKnight    文件:FileEncrypt.java   
public static String CBCDecrypt(int alg, int KeySize, String inFile, String pwd, String mode) throws NoSuchAlgorithmException, InvalidKeySpecException, DataLengthException, IllegalStateException, InvalidCipherTextException, IOException
{
    String res = "";

    if (checkFile(inFile.substring(0, inFile.lastIndexOf("."))))
    {
        res = "A file with the same name already exists! Rename or move it to avoid losing your data!";
        return res;
    }

    byte[] Encrypted = loadFile(inFile);


    Encryptor enc = new Encryptor();
    enc.setParameters(KeySize, alg);
    enc.setDecParameters(Encrypted, alg, pwd, KeySize, mode);
    byte[] bytesRes = enc.CBCDecrypt(Encrypted, alg);

    save2File(inFile.substring(0, inFile.lastIndexOf(".")), bytesRes);

    res = "Done! file contents decrypted and saved to the specified directory!"; 
    return res;
}
项目:ipack    文件:SICBlockCipher.java   
public int processBlock(byte[] in, int inOff, byte[] out, int outOff)
      throws DataLengthException, IllegalStateException
{
    cipher.processBlock(counter, 0, counterOut, 0);

    //
    // XOR the counterOut with the plaintext producing the cipher text
    //
    for (int i = 0; i < counterOut.length; i++)
    {
      out[outOff + i] = (byte)(counterOut[i] ^ in[inOff + i]);
    }

    // increment counter by 1.
    for (int i = counter.length - 1; i >= 0 && ++counter[i] == 0; i--)
    {
        ; // do nothing - pre-increment and test for 0 in counter does the job.
    }

    return counter.length;
}
项目:keepass2android    文件:JCEStreamCipher.java   
protected int engineUpdate(
    byte[]  input,
    int     inputOffset,
    int     inputLen,
    byte[]  output,
    int     outputOffset) 
    throws ShortBufferException 
{
    try
    {
    cipher.processBytes(input, inputOffset, inputLen, output, outputOffset);

    return inputLen;
    }
    catch (DataLengthException e)
    {
        throw new ShortBufferException(e.getMessage());
    }
}
项目:ipack    文件:PaddedBufferedBlockCipher.java   
/**
 * process a single byte, producing an output block if neccessary.
 *
 * @param in the input byte.
 * @param out the space for any output that might be produced.
 * @param outOff the offset from which the output will be copied.
 * @return the number of output bytes copied to out.
 * @exception DataLengthException if there isn't enough space in out.
 * @exception IllegalStateException if the cipher isn't initialised.
 */
public int processByte(
    byte        in,
    byte[]      out,
    int         outOff)
    throws DataLengthException, IllegalStateException
{
    int         resultLen = 0;

    if (bufOff == buf.length)
    {
        resultLen = cipher.processBlock(buf, 0, out, outOff);
        bufOff = 0;
    }

    buf[bufOff++] = in;

    return resultLen;
}
项目:keepass2android    文件:CTSBlockCipher.java   
/**
 * process a single byte, producing an output block if neccessary.
 *
 * @param in the input byte.
 * @param out the space for any output that might be produced.
 * @param outOff the offset from which the output will be copied.
 * @return the number of output bytes copied to out.
 * @exception DataLengthException if there isn't enough space in out.
 * @exception IllegalStateException if the cipher isn't initialised.
 */
public int processByte(
    byte        in,
    byte[]      out,
    int         outOff)
    throws DataLengthException, IllegalStateException
{
    int         resultLen = 0;

    if (bufOff == buf.length)
    {
        resultLen = cipher.processBlock(buf, 0, out, outOff);
        System.arraycopy(buf, blockSize, buf, 0, blockSize);

        bufOff = blockSize;
    }

    buf[bufOff++] = in;

    return resultLen;
}
项目:ipack    文件:BaseBlockCipher.java   
protected int engineUpdate(
    byte[]  input,
    int     inputOffset,
    int     inputLen,
    byte[]  output,
    int     outputOffset)
    throws ShortBufferException
{
    try
    {
        return cipher.processBytes(input, inputOffset, inputLen, output, outputOffset);
    }
    catch (DataLengthException e)
    {
        throw new ShortBufferException(e.getMessage());
    }
}
项目:keepass2android    文件:PaddedBufferedBlockCipher.java   
/**
 * process a single byte, producing an output block if neccessary.
 *
 * @param in the input byte.
 * @param out the space for any output that might be produced.
 * @param outOff the offset from which the output will be copied.
 * @return the number of output bytes copied to out.
 * @exception DataLengthException if there isn't enough space in out.
 * @exception IllegalStateException if the cipher isn't initialised.
 */
public int processByte(
    byte        in,
    byte[]      out,
    int         outOff)
    throws DataLengthException, IllegalStateException
{
    int         resultLen = 0;

    if (bufOff == buf.length)
    {
        resultLen = cipher.processBlock(buf, 0, out, outOff);
        bufOff = 0;
    }

    buf[bufOff++] = in;

    return resultLen;
}
项目:ipack    文件:JCEStreamCipher.java   
protected int engineUpdate(
    byte[]  input,
    int     inputOffset,
    int     inputLen,
    byte[]  output,
    int     outputOffset) 
    throws ShortBufferException 
{
    try
    {
    cipher.processBytes(input, inputOffset, inputLen, output, outputOffset);

    return inputLen;
    }
    catch (DataLengthException e)
    {
        throw new ShortBufferException(e.getMessage());
    }
}
项目:ipack    文件:HKDFBytesGenerator.java   
/**
 * Performs the expand part of the key derivation function, using currentT
 * as input and output buffer.
 *
 * @throws DataLengthException if the total number of bytes generated is larger than the one
 * specified by RFC 5869 (255 * HashLen)
 */
private void expandNext()
    throws DataLengthException
{
    int n = generatedBytes / hashLen + 1;
    if (n >= 256)
    {
        throw new DataLengthException(
            "HKDF cannot generate more than 255 blocks of HashLen size");
    }
    // special case for T(0): T(0) is empty, so no update
    if (generatedBytes != 0)
    {
        hMacHash.update(currentT, 0, hashLen);
    }
    hMacHash.update(info, 0, info.length);
    hMacHash.update((byte)n);
    hMacHash.doFinal(currentT, 0);
}
项目:ipack    文件:RC6Engine.java   
public int processBlock(
    byte[]  in,
    int     inOff,
    byte[]  out,
    int     outOff)
{
    int blockSize = getBlockSize();
    if (_S == null)
    {
        throw new IllegalStateException("RC6 engine not initialised");
    }
    if ((inOff + blockSize) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }
    if ((outOff + blockSize) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    return (forEncryption)
        ?   encryptBlock(in, inOff, out, outOff) 
        :   decryptBlock(in, inOff, out, outOff);
}
项目:truevfs    文件:CtrBlockCipher.java   
@Override
public final int processBlock(
        final byte[] in,
        int inOff,
        final byte[] out,
        int outOff)
throws DataLengthException, IllegalStateException {
    incCounter();
    cipher.processBlock(cipherIn, 0, cipherOut, 0);

    // XOR the cipherOut with the plaintext producing the cipher text.
    final int blockSize = this.blockSize;
    {
        int i = blockSize;
        inOff += i;
        outOff += i;
        while (i > 0)
            out[--outOff] = (byte) (in[--inOff] ^ cipherOut[--i]);
    }

    return blockSize;
}
项目:ipack    文件:Grain128Engine.java   
public void processBytes(byte[] in, int inOff, int len, byte[] out,
                         int outOff)
    throws DataLengthException
{
    if (!initialised)
    {
        throw new IllegalStateException(getAlgorithmName()
            + " not initialised");
    }

    if ((inOff + len) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + len) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    for (int i = 0; i < len; i++)
    {
        out[outOff + i] = (byte)(in[inOff + i] ^ getKeyStream());
    }
}
项目:ipack    文件:NullEngine.java   
public int processBlock(byte[] in, int inOff, byte[] out, int outOff)
    throws DataLengthException, IllegalStateException
{
    if (!initialised)
    {
        throw new IllegalStateException("Null engine not initialised");
    }
        if ((inOff + BLOCK_SIZE) > in.length)
        {
            throw new DataLengthException("input buffer too short");
        }

        if ((outOff + BLOCK_SIZE) > out.length)
        {
            throw new OutputLengthException("output buffer too short");
        }

        for (int i = 0; i < BLOCK_SIZE; ++i)
        {
            out[outOff + i] = in[inOff + i];
        }

        return BLOCK_SIZE;
}
项目:ipack    文件:DESEngine.java   
public int processBlock(
    byte[] in,
    int inOff,
    byte[] out,
    int outOff)
{
    if (workingKey == null)
    {
        throw new IllegalStateException("DES engine not initialised");
    }

    if ((inOff + BLOCK_SIZE) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + BLOCK_SIZE) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    desFunc(workingKey, in, inOff, out, outOff);

    return BLOCK_SIZE;
}
项目:ipack    文件:IDEAEngine.java   
public int processBlock(
    byte[] in,
    int inOff,
    byte[] out,
    int outOff)
{
    if (workingKey == null)
    {
        throw new IllegalStateException("IDEA engine not initialised");
    }

    if ((inOff + BLOCK_SIZE) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + BLOCK_SIZE) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    ideaFunc(workingKey, in, inOff, out, outOff);

    return BLOCK_SIZE;
}
项目:ipack    文件:HC128Engine.java   
public void processBytes(byte[] in, int inOff, int len, byte[] out,
                         int outOff) throws DataLengthException
{
    if (!initialised)
    {
        throw new IllegalStateException(getAlgorithmName()
            + " not initialised");
    }

    if ((inOff + len) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + len) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    for (int i = 0; i < len; i++)
    {
        out[outOff + i] = (byte)(in[inOff + i] ^ getByte());
    }
}
项目:ipack    文件:HC256Engine.java   
public void processBytes(byte[] in, int inOff, int len, byte[] out,
                         int outOff) throws DataLengthException
{
    if (!initialised)
    {
        throw new IllegalStateException(getAlgorithmName()
            + " not initialised");
    }

    if ((inOff + len) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + len) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    for (int i = 0; i < len; i++)
    {
        out[outOff + i] = (byte)(in[inOff + i] ^ getByte());
    }
}
项目:ipack    文件:GOST28147Engine.java   
public int processBlock(
    byte[] in,
    int inOff,
    byte[] out,
    int outOff)
{
    if (workingKey == null)
    {
        throw new IllegalStateException("GOST28147 engine not initialised");
    }

    if ((inOff + BLOCK_SIZE) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + BLOCK_SIZE) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    GOST28147Func(workingKey, in, inOff, out, outOff);

    return BLOCK_SIZE;
}
项目:ipack    文件:TEAEngine.java   
public int processBlock(
    byte[]  in,
    int     inOff,
    byte[]  out,
    int     outOff)
{
    if (!_initialised)
    {
        throw new IllegalStateException(getAlgorithmName()+" not initialised");
    }

    if ((inOff + block_size) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + block_size) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    return (_forEncryption) ? encryptBlock(in, inOff, out, outOff)
                                : decryptBlock(in, inOff, out, outOff);
}
项目:ipack    文件:Grainv1Engine.java   
public void processBytes(byte[] in, int inOff, int len, byte[] out,
                         int outOff)
    throws DataLengthException
{
    if (!initialised)
    {
        throw new IllegalStateException(getAlgorithmName()
            + " not initialised");
    }

    if ((inOff + len) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + len) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    for (int i = 0; i < len; i++)
    {
        out[outOff + i] = (byte)(in[inOff + i] ^ getKeyStream());
    }
}
项目:ipack    文件:ECDHKEKGenerator.java   
public int generateBytes(byte[] out, int outOff, int len)
    throws DataLengthException, IllegalArgumentException
{
    // TODO Create an ASN.1 class for this (RFC3278)
    // ECC-CMS-SharedInfo
    ASN1EncodableVector v = new ASN1EncodableVector();

    v.add(new AlgorithmIdentifier(algorithm, DERNull.INSTANCE));
    v.add(new DERTaggedObject(true, 2, new DEROctetString(Pack.intToBigEndian(keySize))));

    try
    {
        kdf.init(new KDFParameters(z, new DERSequence(v).getEncoded(ASN1Encoding.DER)));
    }
    catch (IOException e)
    {
        throw new IllegalArgumentException("unable to initialise kdf: " + e.getMessage());
    }

    return kdf.generateBytes(out, outOff, len);
}
项目:ipack    文件:BaseStreamCipher.java   
protected int engineUpdate(
    byte[]  input,
    int     inputOffset,
    int     inputLen,
    byte[]  output,
    int     outputOffset) 
    throws ShortBufferException 
{
    try
    {
    cipher.processBytes(input, inputOffset, inputLen, output, outputOffset);

    return inputLen;
    }
    catch (DataLengthException e)
    {
        throw new ShortBufferException(e.getMessage());
    }
}
项目:ipack    文件:RSADigestSigner.java   
/**
 * Generate a signature for the message we've been loaded with using the key
 * we were initialised with.
 */
public byte[] generateSignature()
    throws CryptoException, DataLengthException
{
    if (!forSigning)
    {
        throw new IllegalStateException("RSADigestSigner not initialised for signature generation.");
    }

    byte[] hash = new byte[digest.getDigestSize()];
    digest.doFinal(hash, 0);

    try
    {
        byte[] data = derEncode(hash);
        return rsaEngine.processBlock(data, 0, data.length);
    }
    catch (IOException e)
    {
        throw new CryptoException("unable to encode signature: " + e.getMessage(), e);
    }
}
项目:ipack    文件:OCBBlockCipher.java   
public int processBytes(byte[] input, int inOff, int len, byte[] output, int outOff)
    throws DataLengthException
{

    int resultLen = 0;

    for (int i = 0; i < len; ++i)
    {
        mainBlock[mainBlockPos] = input[inOff + i];
        if (++mainBlockPos == mainBlock.length)
        {
            processMainBlock(output, outOff + resultLen);
            resultLen += BLOCK_SIZE;
        }
    }

    return resultLen;
}
项目:ipack    文件:PGPCFBBlockCipher.java   
/**
 * Process one block of input from the array in and write it to
 * the out array.
 *
 * @param in the array containing the input data.
 * @param inOff offset into the in array the data starts at.
 * @param out the array the output data will be copied into.
 * @param outOff the offset into the out array the output will start at.
 * @exception DataLengthException if there isn't enough data in in, or
 * space in out.
 * @exception IllegalStateException if the cipher isn't initialised.
 * @return the number of bytes processed and produced.
 */
public int processBlock(
    byte[] in,
    int inOff,
    byte[] out,
    int outOff)
    throws DataLengthException, IllegalStateException
{
    if (inlineIv)
    {
        return (forEncryption) ? encryptBlockWithIV(in, inOff, out, outOff) : decryptBlockWithIV(in, inOff, out, outOff);
    }
    else
    {
        return (forEncryption) ? encryptBlock(in, inOff, out, outOff) : decryptBlock(in, inOff, out, outOff);
    }
}
项目:ipack    文件:PaddedBlockCipher.java   
/**
 * process a single byte, producing an output block if neccessary.
 *
 * @param in the input byte.
 * @param out the space for any output that might be produced.
 * @param outOff the offset from which the output will be copied.
 * @exception DataLengthException if there isn't enough space in out.
 * @exception IllegalStateException if the cipher isn't initialised.
 */
public int processByte(
    byte        in,
    byte[]      out,
    int         outOff)
    throws DataLengthException, IllegalStateException
{
    int         resultLen = 0;

    if (bufOff == buf.length)
    {
        resultLen = cipher.processBlock(buf, 0, out, outOff);
        bufOff = 0;
    }

    buf[bufOff++] = in;

    return resultLen;
}
项目:ipack    文件:CTSBlockCipher.java   
/**
 * process a single byte, producing an output block if neccessary.
 *
 * @param in the input byte.
 * @param out the space for any output that might be produced.
 * @param outOff the offset from which the output will be copied.
 * @return the number of output bytes copied to out.
 * @exception DataLengthException if there isn't enough space in out.
 * @exception IllegalStateException if the cipher isn't initialised.
 */
public int processByte(
    byte        in,
    byte[]      out,
    int         outOff)
    throws DataLengthException, IllegalStateException
{
    int         resultLen = 0;

    if (bufOff == buf.length)
    {
        resultLen = cipher.processBlock(buf, 0, out, outOff);
        System.arraycopy(buf, blockSize, buf, 0, blockSize);

        bufOff = blockSize;
    }

    buf[bufOff++] = in;

    return resultLen;
}
项目:CryptoKnight    文件:TextEncrypt.java   
public static String CBCEncrypt(String plain, String pwd, int KeySize, int alg, String mode) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException, DataLengthException, IllegalStateException, InvalidCipherTextException 
{

    String res = "";

    Encryptor enc = new Encryptor();
    enc.setParameters(KeySize, alg);
    enc.setEncParameters(alg, pwd, KeySize, mode);
    byte[] bytesRes = enc.CBCEncrypt(plain.getBytes("UTF-8"), alg);

    res = new String(Base64.encodeBase64(bytesRes));

    return res;
}
项目:CryptoKnight    文件:TextEncrypt.java   
public static String CBCDecrypt(String CText, String pwd, int KeySize, int alg, String mode) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeySpecException, DataLengthException, IllegalStateException, InvalidCipherTextException
{       
    String res = "";        

    byte[] Encrypted = Base64.decodeBase64(CText.getBytes("UTF-8"));

    Encryptor enc = new Encryptor();
    enc.setParameters(KeySize, alg);
    enc.setDecParameters(Encrypted, alg, pwd, KeySize, mode);
    byte[] bytesRes = enc.CBCDecrypt(Encrypted, alg);

    res = new String(bytesRes, Charset.forName("UTF-8"));
    return res;
}
项目:keepass2android    文件:OFBBlockCipher.java   
/**
 * Process one block of input from the array in and write it to
 * the out array.
 *
 * @param in the array containing the input data.
 * @param inOff offset into the in array the data starts at.
 * @param out the array the output data will be copied into.
 * @param outOff the offset into the out array the output will start at.
 * @exception DataLengthException if there isn't enough data in in, or
 * space in out.
 * @exception IllegalStateException if the cipher isn't initialised.
 * @return the number of bytes processed and produced.
 */
public int processBlock(
    byte[]      in,
    int         inOff,
    byte[]      out,
    int         outOff)
    throws DataLengthException, IllegalStateException
{
    if ((inOff + blockSize) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + blockSize) > out.length)
    {
        throw new DataLengthException("output buffer too short");
    }

    cipher.processBlock(ofbV, 0, ofbOutV, 0);

    //
    // XOR the ofbV with the plaintext producing the cipher text (and
    // the next input block).
    //
    for (int i = 0; i < blockSize; i++)
    {
        out[outOff + i] = (byte)(ofbOutV[i] ^ in[inOff + i]);
    }

    //
    // change over the input block.
    //
    System.arraycopy(ofbV, blockSize, ofbV, 0, ofbV.length - blockSize);
    System.arraycopy(ofbOutV, 0, ofbV, ofbV.length - blockSize, blockSize);

    return blockSize;
}
项目:ipack    文件:HKDFBytesGenerator.java   
public int generateBytes(byte[] out, int outOff, int len)
    throws DataLengthException, IllegalArgumentException
{

    if (generatedBytes + len > 255 * hashLen)
    {
        throw new DataLengthException(
            "HKDF may only be used for 255 * HashLen bytes of output");
    }

    if (generatedBytes % hashLen == 0)
    {
        expandNext();
    }

    // copy what is left in the currentT (1..hash
    int toGenerate = len;
    int posInT = generatedBytes % hashLen;
    int leftInT = hashLen - generatedBytes % hashLen;
    int toCopy = Math.min(leftInT, toGenerate);
    System.arraycopy(currentT, posInT, out, outOff, toCopy);
    generatedBytes += toCopy;
    toGenerate -= toCopy;
    outOff += toCopy;

    while (toGenerate > 0)
    {
        expandNext();
        toCopy = Math.min(hashLen, toGenerate);
        System.arraycopy(currentT, 0, out, outOff, toCopy);
        generatedBytes += toCopy;
        toGenerate -= toCopy;
        outOff += toCopy;
    }

    return len;
}
项目:keepass2android    文件:CFBBlockCipher.java   
/**
 * Do the appropriate processing for CFB mode encryption.
 *
 * @param in the array containing the data to be encrypted.
 * @param inOff offset into the in array the data starts at.
 * @param out the array the encrypted data will be copied into.
 * @param outOff the offset into the out array the output will start at.
 * @exception DataLengthException if there isn't enough data in in, or
 * space in out.
 * @exception IllegalStateException if the cipher isn't initialised.
 * @return the number of bytes processed and produced.
 */
public int encryptBlock(
    byte[]      in,
    int         inOff,
    byte[]      out,
    int         outOff)
    throws DataLengthException, IllegalStateException
{
    if ((inOff + blockSize) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + blockSize) > out.length)
    {
        throw new DataLengthException("output buffer too short");
    }

    cipher.processBlock(cfbV, 0, cfbOutV, 0);

    //
    // XOR the cfbV with the plaintext producing the ciphertext
    //
    for (int i = 0; i < blockSize; i++)
    {
        out[outOff + i] = (byte)(cfbOutV[i] ^ in[inOff + i]);
    }

    //
    // change over the input block.
    //
    System.arraycopy(cfbV, blockSize, cfbV, 0, cfbV.length - blockSize);
    System.arraycopy(out, outOff, cfbV, cfbV.length - blockSize, blockSize);

    return blockSize;
}
项目:ipack    文件:ISAACEngine.java   
public void processBytes(
    byte[]  in, 
    int     inOff, 
    int     len, 
    byte[]  out, 
    int     outOff)
{
    if (!initialised)
    {
        throw new IllegalStateException(getAlgorithmName()+" not initialised");
    }

    if ((inOff + len) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + len) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    for (int i = 0; i < len; i++)
    {
        if (index == 0) 
        {
            isaac();
            keyStream = Pack.intToBigEndian(results);
        }
        out[i+outOff] = (byte)(keyStream[index]^in[i+inOff]);
        index = (index + 1) & 1023;
    }
}
项目:ipack    文件:RSACoreEngine.java   
public BigInteger convertInput(
    byte[]  in,
    int     inOff,
    int     inLen)
{
    if (inLen > (getInputBlockSize() + 1))
    {
        throw new DataLengthException("input too large for RSA cipher.");
    }
    else if (inLen == (getInputBlockSize() + 1) && !forEncryption)
    {
        throw new DataLengthException("input too large for RSA cipher.");
    }

    byte[]  block;

    if (inOff != 0 || inLen != in.length)
    {
        block = new byte[inLen];

        System.arraycopy(in, inOff, block, 0, inLen);
    }
    else
    {
        block = in;
    }

    BigInteger res = new BigInteger(1, block);
    if (res.compareTo(key.getModulus()) >= 0)
    {
        throw new DataLengthException("input too large for RSA cipher.");
    }

    return res;
}
项目:ipack    文件:SerpentEngine.java   
/**
 * Process one block of input from the array in and write it to
 * the out array.
 *
 * @param in the array containing the input data.
 * @param inOff offset into the in array the data starts at.
 * @param out the array the output data will be copied into.
 * @param outOff the offset into the out array the output will start at.
 * @exception DataLengthException if there isn't enough data in in, or
 * space in out.
 * @exception IllegalStateException if the cipher isn't initialised.
 * @return the number of bytes processed and produced.
 */
public final int processBlock(
    byte[]  in,
    int     inOff,
    byte[]  out,
    int     outOff)
{
    if (wKey == null)
    {
        throw new IllegalStateException("Serpent not initialised");
    }

    if ((inOff + BLOCK_SIZE) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + BLOCK_SIZE) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    if (encrypting)
    {
        encryptBlock(in, inOff, out, outOff);
    }
    else
    {
        decryptBlock(in, inOff, out, outOff);
    }

    return BLOCK_SIZE;
}
项目:ipack    文件:RC4Engine.java   
public void processBytes(
    byte[]     in, 
    int     inOff, 
    int     len, 
    byte[]     out, 
    int     outOff)
{
    if ((inOff + len) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + len) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    for (int i = 0; i < len ; i++)
    {
        x = (x + 1) & 0xff;
        y = (engineState[x] + y) & 0xff;

        // swap
        byte tmp = engineState[x];
        engineState[x] = engineState[y];
        engineState[y] = tmp;

        // xor
        out[i+outOff] = (byte)(in[i + inOff]
                ^ engineState[(engineState[x] + engineState[y]) & 0xff]);
    }
}
项目:ipack    文件:CAST5Engine.java   
public int processBlock(
    byte[] in,
    int inOff,
    byte[] out,
    int outOff)
{
    if (_workingKey == null)
    {
        throw new IllegalStateException(getAlgorithmName()+" not initialised");
    }

    int blockSize = getBlockSize();
    if ((inOff + blockSize) > in.length)
    {
        throw new DataLengthException("Input buffer too short");
    }

    if ((outOff + blockSize) > out.length)
    {
        throw new OutputLengthException("Output buffer too short");
    }

    if (_encrypting)
    {
        return encryptBlock(in, inOff, out, outOff);
    }
    else
    {    
        return decryptBlock(in, inOff, out, outOff);
    }
}
项目:ipack    文件:RC2Engine.java   
public final int processBlock(
    byte[] in,
    int inOff,
    byte[] out,
    int outOff)
{
    if (workingKey == null)
    {
        throw new IllegalStateException("RC2 engine not initialised");
    }

    if ((inOff + BLOCK_SIZE) > in.length)
    {
        throw new DataLengthException("input buffer too short");
    }

    if ((outOff + BLOCK_SIZE) > out.length)
    {
        throw new OutputLengthException("output buffer too short");
    }

    if (encrypting)
    {
        encryptBlock(in, inOff, out, outOff);
    }
    else
    {
        decryptBlock(in, inOff, out, outOff);
    }

    return BLOCK_SIZE;
}