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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? jceblockcipher.java

?? 內(nèi)容:基于jdk1.4的加密算法的具體實(shí)現(xiàn)
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):
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());

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一二三区| 日韩写真欧美这视频| 日本中文字幕一区| 欧美激情一区二区三区蜜桃视频| 在线免费不卡电影| 国产一区三区三区| 亚洲成人一二三| 国产精品福利电影一区二区三区四区| 欧美喷水一区二区| 99国产精品久久久久久久久久| 免费精品99久久国产综合精品| 一区二区在线观看视频| 国产日产欧美一区| 欧美岛国在线观看| 欧美日韩不卡在线| 91国内精品野花午夜精品| 国产精品一卡二卡在线观看| 奇米影视在线99精品| 亚洲一区精品在线| 亚洲情趣在线观看| 欧美国产日韩亚洲一区| 久久久久久亚洲综合影院红桃| 91精品国产综合久久久蜜臀粉嫩| 欧美中文字幕一二三区视频| 不卡一区二区中文字幕| 国产成人精品www牛牛影视| 久久精品国产精品亚洲红杏| 日韩av不卡在线观看| 亚洲第一综合色| 亚洲激情综合网| 亚洲私人黄色宅男| 国产精品免费免费| 国产欧美日韩在线视频| 国产亚洲污的网站| 久久综合资源网| 久久久久久9999| 国产欧美日韩在线| 国产精品视频九色porn| 日本一区二区视频在线| 国产精品五月天| 国产精品色婷婷| 亚洲欧洲无码一区二区三区| 中文字幕在线一区| 1000精品久久久久久久久| 日韩码欧中文字| 亚洲欧美日韩电影| 亚洲成人中文在线| 奇米影视在线99精品| 久久国产精品露脸对白| 国产成人亚洲综合a∨婷婷图片| 国产一区二区三区蝌蚪| 成人美女视频在线看| 色婷婷av一区二区三区软件| 在线亚洲一区二区| 欧美日韩在线直播| 欧美一区二区视频观看视频| 日韩精品中文字幕一区| 国产三级精品三级在线专区| 亚洲欧美日韩国产一区二区三区| 尤物av一区二区| 午夜成人免费电影| 精品一区二区国语对白| 成人一级视频在线观看| 91高清在线观看| 欧美精品日韩综合在线| 久久综合色婷婷| 亚洲欧洲国产日本综合| 亚洲成av人片在线| 激情深爱一区二区| 色综合久久久网| 91精品国产91久久久久久最新毛片| 精品国产髙清在线看国产毛片| 国产婷婷色一区二区三区| 亚洲精品日韩一| 美国十次综合导航| 成人av高清在线| 欧美日本视频在线| 国产午夜精品美女毛片视频| 一区二区三区在线视频免费观看| 免费在线观看一区| 成人午夜电影网站| 91精品国产欧美一区二区| 欧美激情一区二区三区在线| 亚洲国产乱码最新视频| 国产乱码精品一区二区三区av | 高清beeg欧美| 欧美午夜精品久久久久久超碰| 欧美va亚洲va| 夜夜嗨av一区二区三区网页 | 亚洲成av人片在线观看无码| 精品亚洲成a人在线观看| 色网站国产精品| 久久日韩精品一区二区五区| 亚洲国产精品一区二区尤物区| 国产老妇另类xxxxx| 欧美吞精做爰啪啪高潮| 中文字幕精品一区二区精品绿巨人| 日韩影院精彩在线| 一本色道久久综合亚洲91 | 亚洲欧洲制服丝袜| 国产一区二区美女诱惑| 欧美理论电影在线| 亚洲欧洲中文日韩久久av乱码| 国产在线一区二区综合免费视频| 一本到三区不卡视频| 日本一区二区三级电影在线观看| 日本中文字幕一区二区视频| 欧洲激情一区二区| 亚洲视频中文字幕| 国产成人精品三级麻豆| 日韩久久久精品| 亚洲一区二区在线播放相泽| 99精品欧美一区二区三区小说| 国产视频911| 国产乱子轮精品视频| 日韩精品专区在线影院重磅| 天天综合色天天综合| 亚洲免费在线观看| 精品国产乱码久久久久久夜甘婷婷| 亚洲福利一区二区三区| 色综合天天性综合| 国产精品高潮久久久久无| 成人免费的视频| 国产精品免费aⅴ片在线观看| 国产成人福利片| 国产欧美日韩在线观看| 国产不卡免费视频| 国产亚洲欧洲一区高清在线观看| 国产主播一区二区| 2021久久国产精品不只是精品| 韩国成人精品a∨在线观看| 久久久亚洲国产美女国产盗摄 | 欧美亚洲日本国产| 亚洲一级二级三级在线免费观看| 色视频一区二区| 一区二区三区日韩在线观看| 欧美曰成人黄网| 五月天欧美精品| 91精品久久久久久久久99蜜臂| 人人精品人人爱| 精品美女被调教视频大全网站| 国内精品在线播放| 久久久三级国产网站| 粉嫩av一区二区三区在线播放| 国产午夜亚洲精品羞羞网站| 成人黄动漫网站免费app| 国产精品伦一区| 色偷偷久久一区二区三区| 夜夜夜精品看看| 在线播放亚洲一区| 久久成人精品无人区| 国产欧美1区2区3区| av福利精品导航| 亚洲一区在线观看网站| 91精品免费在线观看| 精彩视频一区二区| 国产精品日产欧美久久久久| 91亚洲精品一区二区乱码| 亚洲日本韩国一区| 欧美精品三级日韩久久| 国产麻豆日韩欧美久久| 国产精品理论片在线观看| 色婷婷激情综合| 美女视频黄免费的久久| 亚洲电影一区二区| 精品对白一区国产伦| av在线播放一区二区三区| 香港成人在线视频| 久久免费美女视频| 91国在线观看| 国产乱人伦偷精品视频免下载 | 亚洲综合成人在线视频| 日韩欧美在线影院| eeuss影院一区二区三区 | 日韩电影免费在线观看网站| 国产亚洲综合色| 欧美日韩视频一区二区| 国产精品99久久久久久宅男| 亚洲电影激情视频网站| 国产精品网站在线观看| 欧美日韩色综合| 成人理论电影网| 男女性色大片免费观看一区二区| 中文字幕成人av| 日韩一区二区三区视频在线观看| 成人v精品蜜桃久久一区| 老鸭窝一区二区久久精品| 亚洲日本va午夜在线电影| 精品福利在线导航| 欧洲一区在线观看| 丁香亚洲综合激情啪啪综合| 视频一区二区三区入口| 中文字幕在线一区免费| 久久久久青草大香线综合精品| 欧美日韩国产片| 99久久综合狠狠综合久久| 激情都市一区二区| 日韩电影免费一区| 亚洲一二三专区| 亚洲日本在线a|