⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brokenjceblockcipher.java

📁 kmlnjlkj nlkjlkjkljl okopokipoipo oipipipo i
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        {        case Cipher.ENCRYPT_MODE:        case Cipher.WRAP_MODE:            cipher.init(true, param);            break;        case Cipher.DECRYPT_MODE:        case Cipher.UNWRAP_MODE:            cipher.init(false, param);            break;        default:            System.out.println("eeek!");        }    }    protected void engineInit(        int                 opmode,        Key                 key,        AlgorithmParameters params,        SecureRandom        random)     throws InvalidKeyException, InvalidAlgorithmParameterException    {        AlgorithmParameterSpec  paramSpec = null;        if (params != null)        {            for (int i = 0; i != availableSpecs.length; i++)            {                try                {                    paramSpec = params.getParameterSpec(availableSpecs[i]);                    break;                }                catch (Exception e)                {                    continue;                }            }            if (paramSpec == null)            {                throw new InvalidAlgorithmParameterException("can't handle parameter " + params.toString());            }        }        engineParams = params;        engineInit(opmode, key, paramSpec, random);    }    protected void engineInit(        int                 opmode,        Key                 key,        SecureRandom        random)         throws InvalidKeyException    {        try        {            engineInit(opmode, key, (AlgorithmParameterSpec)null, random);        }        catch (InvalidAlgorithmParameterException e)        {            throw new IllegalArgumentException(e.getMessage());        }    }    protected byte[] engineUpdate(        byte[]  input,        int     inputOffset,        int     inputLen)     {        int     length = cipher.getUpdateOutputSize(inputLen);        if (length > 0)        {                byte[]  out = new byte[length];                cipher.processBytes(input, inputOffset, inputLen, out, 0);                return out;        }        cipher.processBytes(input, inputOffset, inputLen, null, 0);        return null;    }    protected int engineUpdate(        byte[]  input,        int     inputOffset,        int     inputLen,        byte[]  output,        int     outputOffset)     {        return cipher.processBytes(input, inputOffset, inputLen, output, outputOffset);    }    protected byte[] engineDoFinal(        byte[]  input,        int     inputOffset,        int     inputLen)         throws IllegalBlockSizeException, BadPaddingException    {        int     len = 0;        byte[]  tmp = new byte[engineGetOutputSize(inputLen)];        if (inputLen != 0)        {            len = cipher.processBytes(input, inputOffset, inputLen, tmp, 0);        }        try        {            len += cipher.doFinal(tmp, len);        }        catch (DataLengthException e)        {            throw new IllegalBlockSizeException(e.getMessage());        }        catch (InvalidCipherTextException e)        {            throw new BadPaddingException(e.getMessage());        }        byte[]  out = new byte[len];        System.arraycopy(tmp, 0, out, 0, len);        return out;    }    protected int engineDoFinal(        byte[]  input,        int     inputOffset,        int     inputLen,        byte[]  output,        int     outputOffset)         throws IllegalBlockSizeException, BadPaddingException    {        int     len = 0;        if (inputLen != 0)        {                len = cipher.processBytes(input, inputOffset, inputLen, output, outputOffset);        }        try        {            return len + cipher.doFinal(output, outputOffset + len);        }        catch (DataLengthException e)        {            throw new IllegalBlockSizeException(e.getMessage());        }        catch (InvalidCipherTextException e)        {            throw new BadPaddingException(e.getMessage());        }    }    protected byte[] engineWrap(        Key     key)     throws IllegalBlockSizeException, java.security.InvalidKeyException    {        byte[] encoded = key.getEncoded();        if (encoded == null)        {            throw new InvalidKeyException("Cannot wrap key, null encoding.");        }        try        {            return engineDoFinal(encoded, 0, encoded.length);        }        catch (BadPaddingException e)        {            throw new IllegalBlockSizeException(e.getMessage());        }    }    protected Key engineUnwrap(        byte[]  wrappedKey,        String  wrappedKeyAlgorithm,        int     wrappedKeyType)     throws InvalidKeyException    {        byte[] encoded = null;        try        {            encoded = engineDoFinal(wrappedKey, 0, wrappedKey.length);        }        catch (BadPaddingException e)        {            throw new InvalidKeyException(e.getMessage());        }        catch (IllegalBlockSizeException e2)        {            throw new InvalidKeyException(e2.getMessage());        }        if (wrappedKeyType == Cipher.SECRET_KEY)        {            return new SecretKeySpec(encoded, wrappedKeyAlgorithm);        }        else        {            try            {                KeyFactory kf = KeyFactory.getInstance(wrappedKeyAlgorithm, "BC");                if (wrappedKeyType == Cipher.PUBLIC_KEY)                {                    return kf.generatePublic(new X509EncodedKeySpec(encoded));                }                else if (wrappedKeyType == Cipher.PRIVATE_KEY)                {                    return kf.generatePrivate(new PKCS8EncodedKeySpec(encoded));                }            }            catch (NoSuchProviderException e)            {                throw new InvalidKeyException("Unknown key type " + e.getMessage());            }            catch (NoSuchAlgorithmException e)            {                throw new InvalidKeyException("Unknown key type " + e.getMessage());            }            catch (InvalidKeySpecException e2)            {                throw new InvalidKeyException("Unknown key type " + e2.getMessage());            }            throw new InvalidKeyException("Unknown key type " + wrappedKeyType);        }    }    /*     * The ciphers that inherit from us.     */    /**     * PBEWithMD5AndDES     */    static public class BrokePBEWithMD5AndDES        extends BrokenJCEBlockCipher    {        public BrokePBEWithMD5AndDES()        {            super(new CBCBlockCipher(new DESEngine()), PKCS5S1, MD5, 64, 64);        }    }    /**     * PBEWithSHA1AndDES     */    static public class BrokePBEWithSHA1AndDES        extends BrokenJCEBlockCipher    {        public BrokePBEWithSHA1AndDES()        {            super(new CBCBlockCipher(new DESEngine()), PKCS5S1, SHA1, 64, 64);        }    }    /**     * PBEWithSHAAnd3-KeyTripleDES-CBC     */    static public class BrokePBEWithSHAAndDES3Key        extends BrokenJCEBlockCipher    {        public BrokePBEWithSHAAndDES3Key()        {            super(new CBCBlockCipher(new DESedeEngine()), PKCS12, SHA1, 192, 64);        }    }    /**     * OldPBEWithSHAAnd3-KeyTripleDES-CBC     */    static public class OldPBEWithSHAAndDES3Key        extends BrokenJCEBlockCipher    {        public OldPBEWithSHAAndDES3Key()        {            super(new CBCBlockCipher(new DESedeEngine()), OLD_PKCS12, SHA1, 192, 64);        }    }    /**     * PBEWithSHAAnd2-KeyTripleDES-CBC     */    static public class BrokePBEWithSHAAndDES2Key        extends BrokenJCEBlockCipher    {        public BrokePBEWithSHAAndDES2Key()        {            super(new CBCBlockCipher(new DESedeEngine()), PKCS12, SHA1, 128, 64);        }    }    /**     * OldPBEWithSHAAndTwofish-CBC     */    static public class OldPBEWithSHAAndTwofish        extends BrokenJCEBlockCipher    {        public OldPBEWithSHAAndTwofish()        {            super(new CBCBlockCipher(new TwofishEngine()), OLD_PKCS12, SHA1, 256, 128);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -