亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jceblockcipher.java

?? 內容:基于jdk1.4的加密算法的具體實現
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package org.bouncycastle.jce.provider;import java.security.AlgorithmParameters;import java.security.InvalidAlgorithmParameterException;import java.security.InvalidKeyException;import java.security.InvalidParameterException;import java.security.Key;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.spec.AlgorithmParameterSpec;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.NoSuchPaddingException;import javax.crypto.SecretKey;import javax.crypto.ShortBufferException;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.PBEParameterSpec;import javax.crypto.spec.RC2ParameterSpec;import javax.crypto.spec.RC5ParameterSpec;import org.bouncycastle.crypto.BlockCipher;import org.bouncycastle.crypto.BufferedBlockCipher;import org.bouncycastle.crypto.CipherParameters;import org.bouncycastle.crypto.DataLengthException;import org.bouncycastle.crypto.InvalidCipherTextException;import org.bouncycastle.crypto.engines.*;import org.bouncycastle.crypto.modes.CBCBlockCipher;import org.bouncycastle.crypto.modes.CFBBlockCipher;import org.bouncycastle.crypto.modes.CTSBlockCipher;import org.bouncycastle.crypto.modes.GOFBBlockCipher;import org.bouncycastle.crypto.modes.OFBBlockCipher;import org.bouncycastle.crypto.modes.OpenPGPCFBBlockCipher;import org.bouncycastle.crypto.modes.PGPCFBBlockCipher;import org.bouncycastle.crypto.modes.SICBlockCipher;import org.bouncycastle.crypto.paddings.ISO10126d2Padding;import org.bouncycastle.crypto.paddings.ISO7816d4Padding;import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher;import org.bouncycastle.crypto.paddings.TBCPadding;import org.bouncycastle.crypto.paddings.X923Padding;import org.bouncycastle.crypto.paddings.ZeroBytePadding;import org.bouncycastle.crypto.params.KeyParameter;import org.bouncycastle.crypto.params.ParametersWithIV;import org.bouncycastle.crypto.params.ParametersWithRandom;import org.bouncycastle.crypto.params.ParametersWithSBox;import org.bouncycastle.crypto.params.RC2Parameters;import org.bouncycastle.crypto.params.RC5Parameters;import org.bouncycastle.jce.spec.GOST28147ParameterSpec;public class JCEBlockCipher extends WrapCipherSpi    implements PBE{    //    // specs we can handle.    //    private Class[]                 availableSpecs =                                    {                                        RC2ParameterSpec.class,                                        RC5ParameterSpec.class,                                        IvParameterSpec.class,                                        PBEParameterSpec.class,                                        GOST28147ParameterSpec.class                                    };     private BlockCipher             baseEngine;    private BufferedBlockCipher     cipher;    private ParametersWithIV        ivParam;    private int                     ivLength = 0;    private boolean                 padded = true;        private PBEParameterSpec        pbeSpec = null;    private String                  pbeAlgorithm = null;        private String                  modeName = null;    protected JCEBlockCipher(        BlockCipher engine)    {        baseEngine = engine;        cipher = new PaddedBufferedBlockCipher(engine);    }            protected JCEBlockCipher(        BlockCipher engine,        int         ivLength)    {        baseEngine = engine;        this.cipher = new PaddedBufferedBlockCipher(engine);        this.ivLength = ivLength / 8;    }    protected int engineGetBlockSize()     {        return baseEngine.getBlockSize();    }    protected byte[] engineGetIV()     {        return (ivParam != null) ? ivParam.getIV() : null;    }    protected int engineGetKeySize(        Key     key)     {        return key.getEncoded().length * 8;    }    protected int engineGetOutputSize(        int     inputLen)     {        return cipher.getOutputSize(inputLen);    }    protected AlgorithmParameters engineGetParameters()     {        if (engineParams == null)        {            if (pbeSpec != null)            {                try                {                    engineParams = AlgorithmParameters.getInstance(pbeAlgorithm, "BC");                    engineParams.init(pbeSpec);                }                catch (Exception e)                {                    return null;                }            }            else if (ivParam != null)            {                String  name = cipher.getUnderlyingCipher().getAlgorithmName();                if (name.indexOf('/') >= 0)                {                    name = name.substring(0, name.indexOf('/'));                }                try                {                    engineParams = AlgorithmParameters.getInstance(name, "BC");                    engineParams.init(ivParam.getIV());                }                catch (Exception e)                {                    throw new RuntimeException(e.toString());                }            }        }        return engineParams;    }    protected void engineSetMode(        String  mode)        throws NoSuchAlgorithmException    {        modeName = mode.toUpperCase();        if (modeName.equals("ECB"))        {            ivLength = 0;            cipher = new PaddedBufferedBlockCipher(baseEngine);        }        else if (modeName.equals("CBC"))        {            ivLength = baseEngine.getBlockSize();            cipher = new PaddedBufferedBlockCipher(                            new CBCBlockCipher(baseEngine));        }        else if (modeName.startsWith("OFB"))        {            ivLength = baseEngine.getBlockSize();            if (modeName.length() != 3)            {                int wordSize = Integer.parseInt(modeName.substring(3));                cipher = new PaddedBufferedBlockCipher(                                new OFBBlockCipher(baseEngine, wordSize));            }            else            {                cipher = new PaddedBufferedBlockCipher(                        new OFBBlockCipher(baseEngine, 8 * baseEngine.getBlockSize()));            }        }        else if (modeName.startsWith("CFB"))        {            ivLength = baseEngine.getBlockSize();            if (modeName.length() != 3)            {                int wordSize = Integer.parseInt(modeName.substring(3));                cipher = new PaddedBufferedBlockCipher(                                new CFBBlockCipher(baseEngine, wordSize));            }            else            {                cipher = new PaddedBufferedBlockCipher(                        new CFBBlockCipher(baseEngine, 8 * baseEngine.getBlockSize()));            }        }        else if (modeName.startsWith("PGP"))        {            if (modeName.equalsIgnoreCase("PGPCFBwithIV"))            {                ivLength = baseEngine.getBlockSize();                cipher = new PaddedBufferedBlockCipher(                    new PGPCFBBlockCipher(baseEngine, true));            }            else            {                ivLength = baseEngine.getBlockSize();                cipher = new PaddedBufferedBlockCipher(                    new PGPCFBBlockCipher(baseEngine, false));            }        }        else if (modeName.equalsIgnoreCase("OpenPGPCFB"))        {            ivLength = 0;            cipher = new PaddedBufferedBlockCipher(                new OpenPGPCFBBlockCipher(baseEngine));        }        else if (modeName.startsWith("SIC"))        {            ivLength = baseEngine.getBlockSize();            if (ivLength < 16)            {                throw new IllegalArgumentException("Warning: SIC-Mode can become a twotime-pad if the blocksize of the cipher is too small. Use a cipher with a block size of at least 128 bits (e.g. AES)");            }            cipher = new BufferedBlockCipher(                        new SICBlockCipher(baseEngine));        }        else if (modeName.startsWith("CTR"))        {            ivLength = baseEngine.getBlockSize();            cipher = new BufferedBlockCipher(                        new SICBlockCipher(baseEngine));        }        else if (modeName.startsWith("GOFB"))        {            ivLength = baseEngine.getBlockSize();            cipher = new BufferedBlockCipher(                        new GOFBBlockCipher(baseEngine));        }        else if (modeName.startsWith("CTS"))        {            ivLength = baseEngine.getBlockSize();            cipher = new CTSBlockCipher(new CBCBlockCipher(baseEngine));        }        else        {            throw new NoSuchAlgorithmException("can't support mode " + mode);        }    }    protected void engineSetPadding(        String  padding)     throws NoSuchPaddingException    {        String  paddingName = padding.toUpperCase();        if (paddingName.equals("NOPADDING"))        {            padded = false;                        if (!(cipher instanceof CTSBlockCipher))            {                cipher = new BufferedBlockCipher(cipher.getUnderlyingCipher());            }        }        else if (paddingName.equals("PKCS5PADDING") || paddingName.equals("PKCS7PADDING"))        {            cipher = new PaddedBufferedBlockCipher(cipher.getUnderlyingCipher());        }        else if (paddingName.equals("ZEROBYTEPADDING"))        {            cipher = new PaddedBufferedBlockCipher(cipher.getUnderlyingCipher(), new ZeroBytePadding());        }        else if (paddingName.equals("ISO10126PADDING") || paddingName.equals("ISO10126-2PADDING"))        {            cipher = new PaddedBufferedBlockCipher(cipher.getUnderlyingCipher(), new ISO10126d2Padding());        }        else if (paddingName.equals("X9.23PADDING") || paddingName.equals("X923PADDING"))        {            cipher = new PaddedBufferedBlockCipher(cipher.getUnderlyingCipher(), new X923Padding());        }        else if (paddingName.equals("ISO7816-4PADDING") || paddingName.equals("ISO9797-1PADDING"))        {            cipher = new PaddedBufferedBlockCipher(cipher.getUnderlyingCipher(), new ISO7816d4Padding());        }        else if (paddingName.equals("TBCPADDING"))        {            cipher = new PaddedBufferedBlockCipher(cipher.getUnderlyingCipher(), new TBCPadding());        }        else if (paddingName.equals("WITHCTS"))        {            padded = false;            cipher = new CTSBlockCipher(cipher.getUnderlyingCipher());        }        else        {            throw new NoSuchPaddingException("Padding " + padding + " unknown.");        }    }    protected void engineInit(        int                     opmode,        Key                     key,        AlgorithmParameterSpec  params,        SecureRandom            random)         throws InvalidKeyException, InvalidAlgorithmParameterException    {        CipherParameters        param;                this.pbeSpec = null;        this.pbeAlgorithm = null;        this.engineParams = null;                //        // basic key check        //        if (!(key instanceof SecretKey))        {            throw new InvalidKeyException("Key for algorithm " + key.getAlgorithm() + " not suitable for symmetric enryption.");        }                //        // for RC5-64 we must have some default parameters        //        if (params == null && baseEngine.getAlgorithmName().startsWith("RC5-64"))        {            throw new InvalidAlgorithmParameterException("RC5 requires an RC5ParametersSpec to be passed in.");        }        //        // a note on iv's - if ivLength is zero the IV gets ignored (we don't use it).        //        if (key instanceof JCEPBEKey)        {            JCEPBEKey   k = (JCEPBEKey)key;                        if (k.getOID() != null)            {                pbeAlgorithm = k.getOID().getId();            }            else            {                pbeAlgorithm = k.getAlgorithm();            }                        if (k.getParam() != null)            {                param = k.getParam();                pbeSpec = new PBEParameterSpec(k.getSalt(), k.getIterationCount());            }            else if (params instanceof PBEParameterSpec)            {                pbeSpec = (PBEParameterSpec)params;                param = PBE.Util.makePBEParameters(k, params, cipher.getUnderlyingCipher().getAlgorithmName());            }            else            {                throw new InvalidAlgorithmParameterException("PBE requires PBE parameters to be set.");            }            if (param instanceof ParametersWithIV)            {                ivParam = (ParametersWithIV)param;            }        }        else if (params == null)        {            param = new KeyParameter(key.getEncoded());        }        else if (params instanceof IvParameterSpec)        {            if (ivLength != 0)            {                IvParameterSpec p = (IvParameterSpec)params;                if (p.getIV().length != ivLength)                {                    throw new InvalidAlgorithmParameterException("IV must be " + ivLength + " bytes long.");                }                param = new ParametersWithIV(new KeyParameter(key.getEncoded()), p.getIV());                ivParam = (ParametersWithIV)param;            }            else            {                if (modeName != null && modeName.equals("ECB"))                {                    throw new InvalidAlgorithmParameterException("ECB mode does not use an IV");                }                                param = new KeyParameter(key.getEncoded());            }        }        else if (params instanceof GOST28147ParameterSpec)        {            GOST28147ParameterSpec    gost28147Param = (GOST28147ParameterSpec)params;            param = new ParametersWithSBox(                       new KeyParameter(key.getEncoded()), ((GOST28147ParameterSpec)params).getSbox());            if (gost28147Param.getIV() != null && ivLength != 0)            {                param = new ParametersWithIV(param, gost28147Param.getIV());                ivParam = (ParametersWithIV)param;            }        }        else if (params instanceof RC2ParameterSpec)        {            RC2ParameterSpec    rc2Param = (RC2ParameterSpec)params;            param = new RC2Parameters(key.getEncoded(), ((RC2ParameterSpec)params).getEffectiveKeyBits());            if (rc2Param.getIV() != null && ivLength != 0)            {                param = new ParametersWithIV(param, rc2Param.getIV());                ivParam = (ParametersWithIV)param;            }        }        else if (params instanceof RC5ParameterSpec)        {            RC5ParameterSpec    rc5Param = (RC5ParameterSpec)params;            param = new RC5Parameters(key.getEncoded(), ((RC5ParameterSpec)params).getRounds());            if (baseEngine.getAlgorithmName().startsWith("RC5"))            {                if (baseEngine.getAlgorithmName().equals("RC5-32"))                {                    if (rc5Param.getWordSize() != 32)                    {                        throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 32 not " + rc5Param.getWordSize() + ".");                    }                }                else if (baseEngine.getAlgorithmName().equals("RC5-64"))                {                    if (rc5Param.getWordSize() != 64)                    {                        throw new InvalidAlgorithmParameterException("RC5 already set up for a word size of 64 not " + rc5Param.getWordSize() + ".");                    }                }            }            else            {                throw new InvalidAlgorithmParameterException("RC5 parameters passed to a cipher that is not RC5.");            }            if ((rc5Param.getIV() != null) && (ivLength != 0))            {                param = new ParametersWithIV(param, rc5Param.getIV());                ivParam = (ParametersWithIV)param;            }        }        else        {            throw new InvalidAlgorithmParameterException("unknown parameter type.");        }        if ((ivLength != 0) && !(param instanceof ParametersWithIV))        {            SecureRandom    ivRandom = random;            if (ivRandom == null)            {                ivRandom = new SecureRandom();            }            if ((opmode == Cipher.ENCRYPT_MODE) || (opmode == Cipher.WRAP_MODE))            {                byte[]  iv = new byte[ivLength];                ivRandom.nextBytes(iv);                param = new ParametersWithIV(param, iv);                ivParam = (ParametersWithIV)param;            }            else if (cipher.getUnderlyingCipher().getAlgorithmName().indexOf("PGPCFB") < 0)            {                throw new InvalidAlgorithmParameterException("no IV set when one expected");            }        }        if (random != null && padded)        {            param = new ParametersWithRandom(param, random);        }        try        {            switch (opmode)            {            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:                throw new InvalidParameterException("unknown opmode " + opmode + " passed");            }        }        catch (Exception e)        {            throw new InvalidKeyException(e.getMessage());        }    }    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());            }        }        engineInit(opmode, key, paramSpec, random);                engineParams = params;    }    protected void engineInit(        int                 opmode,        Key                 key,        SecureRandom        random)         throws InvalidKeyException    {        try        {            engineInit(opmode, key, (AlgorithmParameterSpec)null, random);        }        catch (InvalidAlgorithmParameterException e)        {            throw new InvalidKeyException(e.getMessage());

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲日本一区| 成人av网站在线观看免费| 在线91免费看| 欧美aaaaa成人免费观看视频| 欧美裸体一区二区三区| 日本麻豆一区二区三区视频| 欧美一区二区啪啪| 激情综合网最新| 欧美激情一区在线观看| 99re在线精品| 日韩成人午夜电影| 久久久久久久性| 91蜜桃网址入口| 天堂一区二区在线免费观看| 欧美精品一区二区三| 成人综合在线视频| 亚洲国产精品一区二区尤物区| 欧美精品一级二级| 国产电影精品久久禁18| 自拍偷拍国产精品| 69av一区二区三区| 成人h动漫精品一区二区| 亚洲一区在线视频| www激情久久| 91福利在线免费观看| 免费成人小视频| 1000精品久久久久久久久| 7777精品伊人久久久大香线蕉完整版 | 欧美日韩精品高清| 国产一区二区免费在线| 一区二区三区精品视频在线| 精品国产一区二区三区不卡| 91美女精品福利| 久久99精品久久久| 亚洲综合免费观看高清完整版| 日韩一区二区在线看片| 91在线视频网址| 国产曰批免费观看久久久| 亚洲一区二区三区四区在线免费观看 | 精品国产一区二区三区久久影院| 91在线观看污| 激情综合网最新| 天堂久久一区二区三区| 自拍偷拍欧美激情| 26uuu欧美| 欧美色综合网站| 波多野结衣视频一区| 久久国产婷婷国产香蕉| 亚洲一区二区成人在线观看| 26uuu亚洲| 日韩三级中文字幕| 欧美日韩在线精品一区二区三区激情| 成人综合婷婷国产精品久久蜜臀| 日韩高清一区在线| 亚洲二区视频在线| 亚洲精品成人少妇| 国产精品无遮挡| 精品国产1区2区3区| 日韩一区二区三区在线观看| 色香蕉久久蜜桃| eeuss鲁片一区二区三区在线观看| 久久精品久久综合| 日本va欧美va精品| 日本伊人午夜精品| 天堂va蜜桃一区二区三区 | 欧美日韩精品一区二区三区| 99久久精品免费看| 北条麻妃国产九九精品视频| 国产九色精品成人porny| 久久aⅴ国产欧美74aaa| 美女视频黄久久| 毛片一区二区三区| 美女一区二区视频| 蜜桃av一区二区在线观看| 秋霞午夜av一区二区三区| 日本视频中文字幕一区二区三区| 伊人夜夜躁av伊人久久| 亚洲欧美另类久久久精品2019| 国产精品久久午夜| 国产精品久久久久一区| 中文字幕一区免费在线观看| 中文字幕乱码一区二区免费| 国产精品久久久久婷婷| 亚洲日本一区二区三区| 一区二区三区四区精品在线视频| 亚洲素人一区二区| 亚洲最大的成人av| 午夜欧美大尺度福利影院在线看| 五月婷婷激情综合| 蜜臀av国产精品久久久久| 久草精品在线观看| 国产精品影视天天线| 成人一区二区三区视频| 一本色道久久综合精品竹菊| 在线免费精品视频| 欧美丰满一区二区免费视频 | 亚洲国产婷婷综合在线精品| 亚洲电影一级片| 美女网站在线免费欧美精品| 国产精品一区二区黑丝| 99国产麻豆精品| 欧美欧美午夜aⅴ在线观看| 日韩美一区二区三区| 亚洲国产精品av| 一区二区三区免费网站| 日韩高清在线不卡| 成人精品视频一区| 欧美日韩不卡在线| 国产午夜精品久久久久久久| 亚洲乱码国产乱码精品精可以看| 亚洲综合男人的天堂| 极品少妇一区二区三区精品视频| 国产suv一区二区三区88区| 色老综合老女人久久久| 精品成人一区二区三区| 亚洲日穴在线视频| 日韩中文欧美在线| 福利电影一区二区| 欧美日韩一区二区不卡| 欧美韩国日本不卡| 亚洲高清视频的网址| 国产精品一区二区三区乱码| 欧美日韩中文字幕精品| 日本一区二区三区电影| 午夜av区久久| 成人高清免费在线播放| 欧美色欧美亚洲另类二区| 日本一区二区免费在线观看视频| 亚洲福利电影网| 成人国产精品免费| 精品国产一区二区在线观看| 亚洲一区免费在线观看| 国产成人av网站| 欧美成人video| 亚洲成av人在线观看| 99久久99久久精品免费看蜜桃| 91精品久久久久久蜜臀| 亚洲免费在线观看视频| 国产成a人亚洲| 日韩免费电影网站| 日韩高清中文字幕一区| 欧美主播一区二区三区| 国产精品久久看| 国产mv日韩mv欧美| 久久一留热品黄| 久久精品国产99久久6| 欧美日韩精品一区二区三区| 亚洲久本草在线中文字幕| 国产不卡高清在线观看视频| 精品噜噜噜噜久久久久久久久试看| 亚洲一区二区三区在线播放| 色综合色狠狠天天综合色| 国产精品美女久久久久久久久| 老司机精品视频在线| 日韩一区二区影院| 日本亚洲欧美天堂免费| 欧美日韩大陆在线| 日韩国产高清在线| 这里只有精品免费| 亚洲韩国精品一区| 欧美日韩一区二区在线观看视频 | 成人免费视频视频| 中文av一区特黄| 成人在线综合网站| 国产精品久久久久一区| 成人av在线资源| 亚洲麻豆国产自偷在线| 国产aⅴ精品一区二区三区色成熟| 制服丝袜中文字幕亚洲| 日韩精品一二三区| 欧美电影影音先锋| 蜜臀av亚洲一区中文字幕| 日韩欧美国产精品| 国产精品系列在线播放| 中文字幕欧美激情| av午夜精品一区二区三区| 日韩一区中文字幕| 91久久精品一区二区| 一个色妞综合视频在线观看| 91国偷自产一区二区开放时间 | 精品88久久久久88久久久| 蜜桃久久av一区| 国产三级精品三级| av成人免费在线观看| 一个色妞综合视频在线观看| 欧美视频中文字幕| 毛片av一区二区| 国产精品免费观看视频| 丁香婷婷综合五月| 亚洲一区二区三区四区不卡| 欧美一区二区在线免费观看| 久久99精品国产麻豆不卡| 国产人成一区二区三区影院| 91色.com| 日韩影院免费视频| 国产人成一区二区三区影院| 一本大道久久a久久精二百| 亚洲成a人片在线不卡一二三区 | 久久亚洲一级片| 成人免费视频视频在线观看免费|