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

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

?? oaepencoding.java

?? 內(nèi)容:基于jdk1.4的加密算法的具體實現(xiàn)
?? JAVA
字號:
package org.bouncycastle.crypto.encodings;import java.security.SecureRandom;import org.bouncycastle.crypto.AsymmetricBlockCipher;import org.bouncycastle.crypto.CipherParameters;import org.bouncycastle.crypto.Digest;import org.bouncycastle.crypto.InvalidCipherTextException;import org.bouncycastle.crypto.digests.SHA1Digest;import org.bouncycastle.crypto.params.AsymmetricKeyParameter;import org.bouncycastle.crypto.params.ParametersWithRandom;/** * Optimal Asymmetric Encryption Padding (OAEP) - see PKCS 1 V 2. */public class OAEPEncoding    implements AsymmetricBlockCipher{    private byte[]                  defHash;    private Digest                  hash;    private AsymmetricBlockCipher   engine;    private SecureRandom            random;    private boolean                 forEncryption;    public OAEPEncoding(        AsymmetricBlockCipher   cipher)    {        this(cipher, new SHA1Digest(), null);    }        public OAEPEncoding(        AsymmetricBlockCipher       cipher,        Digest                      hash)    {        this(cipher, hash, null);    }        public OAEPEncoding(        AsymmetricBlockCipher       cipher,        Digest                      hash,        byte[]                      encodingParams)    {        this.engine = cipher;        this.hash = hash;        this.defHash = new byte[hash.getDigestSize()];                if (encodingParams != null)        {            hash.update(encodingParams, 0, encodingParams.length);        }                hash.doFinal(defHash, 0);    }        public AsymmetricBlockCipher getUnderlyingCipher()    {        return engine;    }    public void init(        boolean             forEncryption,        CipherParameters    param)    {        AsymmetricKeyParameter  kParam;        if (param instanceof ParametersWithRandom)        {            ParametersWithRandom  rParam = (ParametersWithRandom)param;            this.random = rParam.getRandom();            kParam = (AsymmetricKeyParameter)rParam.getParameters();        }        else        {               this.random = new SecureRandom();            kParam = (AsymmetricKeyParameter)param;        }        engine.init(forEncryption, kParam);        this.forEncryption = forEncryption;    }    public int getInputBlockSize()    {        int     baseBlockSize = engine.getInputBlockSize();        if (forEncryption)        {            return baseBlockSize - 1 - 2 * defHash.length;        }        else        {            return baseBlockSize;        }    }    public int getOutputBlockSize()    {        int     baseBlockSize = engine.getOutputBlockSize();        if (forEncryption)        {            return baseBlockSize;        }        else        {            return baseBlockSize - 1 - 2 * defHash.length;        }    }    public byte[] processBlock(        byte[]  in,        int     inOff,        int     inLen)        throws InvalidCipherTextException    {        if (forEncryption)        {            return encodeBlock(in, inOff, inLen);        }        else        {            return decodeBlock(in, inOff, inLen);        }    }    public byte[] encodeBlock(        byte[]  in,        int     inOff,        int     inLen)        throws InvalidCipherTextException    {        byte[]  block = new byte[getInputBlockSize() + 1 + 2 * defHash.length];        //        // copy in the message        //        System.arraycopy(in, inOff, block, block.length - inLen, inLen);        //        // add sentinel        //        block[block.length - inLen - 1] = 0x01;        //        // as the block is already zeroed - there's no need to add PS (the >= 0 pad of 0)        //        //        // add the hash of the encoding params.        //        System.arraycopy(defHash, 0, block, defHash.length, defHash.length);        //        // generate the seed.        //        byte[]  seed = new byte[defHash.length];        random.nextBytes(seed);        //        // mask the message block.        //        byte[]  mask = maskGeneratorFunction1(seed, 0, seed.length, block.length - defHash.length);        for (int i = defHash.length; i != block.length; i++)        {            block[i] ^= mask[i - defHash.length];        }        //        // add in the seed        //        System.arraycopy(seed, 0, block, 0, defHash.length);        //        // mask the seed.        //        mask = maskGeneratorFunction1(                        block, defHash.length, block.length - defHash.length, defHash.length);        for (int i = 0; i != defHash.length; i++)        {            block[i] ^= mask[i];        }        return engine.processBlock(block, 0, block.length);    }    /**     * @exception InvalidCipherTextException if the decrypted block turns out to     * be badly formatted.     */    public byte[] decodeBlock(        byte[]  in,        int     inOff,        int     inLen)        throws InvalidCipherTextException    {        byte[]  data = engine.processBlock(in, inOff, inLen);        byte[]  block = null;        //        // as we may have zeros in our leading bytes for the block we produced        // on encryption, we need to make sure our decrypted block comes back        // the same size.        //        if (data.length < engine.getOutputBlockSize())        {            block = new byte[engine.getOutputBlockSize()];            System.arraycopy(data, 0, block, block.length - data.length, data.length);        }        else        {            block = data;        }        if (block.length < (2 * defHash.length) + 1)        {            throw new InvalidCipherTextException("data too short");        }        //        // unmask the seed.        //        byte[] mask = maskGeneratorFunction1(                    block, defHash.length, block.length - defHash.length, defHash.length);        for (int i = 0; i != defHash.length; i++)        {            block[i] ^= mask[i];        }        //        // unmask the message block.        //        mask = maskGeneratorFunction1(block, 0, defHash.length, block.length - defHash.length);        for (int i = defHash.length; i != block.length; i++)        {            block[i] ^= mask[i - defHash.length];        }        //        // check the hash of the encoding params.        //        for (int i = 0; i != defHash.length; i++)        {            if (defHash[i] != block[defHash.length + i])            {                throw new InvalidCipherTextException("data hash wrong");            }        }        //        // find the data block        //        int start;        for (start = 2 * defHash.length; start != block.length; start++)        {            if (block[start] == 1 || block[start] != 0)            {                break;            }        }        if (start >= (block.length - 1) || block[start] != 1)        {            throw new InvalidCipherTextException("data start wrong " + start);        }        start++;        //        // extract the data block        //        byte[]  output = new byte[block.length - start];        System.arraycopy(block, start, output, 0, output.length);        return output;    }    /**     * int to octet string.     */    private void ItoOSP(        int     i,        byte[]  sp)    {        sp[0] = (byte)(i >>> 24);        sp[1] = (byte)(i >>> 16);        sp[2] = (byte)(i >>> 8);        sp[3] = (byte)(i >>> 0);    }    /**     * mask generator function, as described in PKCS1v2.     */    private byte[] maskGeneratorFunction1(        byte[]  Z,        int     zOff,        int     zLen,        int     length)    {        byte[]  mask = new byte[length];        byte[]  hashBuf = new byte[defHash.length];        byte[]  C = new byte[4];        int     counter = 0;        hash.reset();        do        {            ItoOSP(counter, C);            hash.update(Z, zOff, zLen);            hash.update(C, 0, C.length);            hash.doFinal(hashBuf, 0);            System.arraycopy(hashBuf, 0, mask, counter * defHash.length, defHash.length);        }        while (++counter < (length / defHash.length));        if ((counter * defHash.length) < length)        {            ItoOSP(counter, C);            hash.update(Z, zOff, zLen);            hash.update(C, 0, C.length);            hash.doFinal(hashBuf, 0);            System.arraycopy(hashBuf, 0, mask, counter * defHash.length, mask.length - (counter * defHash.length));        }        return mask;    }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
黄色小说综合网站| 亚洲免费观看高清完整 | 久久精品夜色噜噜亚洲aⅴ| 日韩国产欧美在线视频| 91精品婷婷国产综合久久性色| 午夜精品久久久久久久99樱桃| 欧美日韩三级一区| 日韩精品亚洲一区二区三区免费| 91精品国产91久久久久久一区二区| 日本一区中文字幕| 亚洲精品一区二区三区精华液| 国内一区二区视频| 国产精品久久久久三级| 91成人看片片| 日韩av午夜在线观看| 亚洲精品一线二线三线| a4yy欧美一区二区三区| 亚洲午夜免费电影| 欧美电影精品一区二区| 国产精品1区2区| 樱花影视一区二区| 欧美一级日韩一级| 成人小视频免费在线观看| 一区二区在线观看免费视频播放| 69堂国产成人免费视频| 国产精品一区专区| 亚洲主播在线播放| 日韩美一区二区三区| 91伊人久久大香线蕉| 日韩精品视频网| 国产精品三级电影| 欧美高清dvd| 粉嫩欧美一区二区三区高清影视| 亚洲国产裸拍裸体视频在线观看乱了| 精品国产乱码久久久久久夜甘婷婷 | 一区在线观看视频| 欧美日韩高清一区二区不卡| 国产乱码一区二区三区| **性色生活片久久毛片| 精品人在线二区三区| 日本韩国欧美一区二区三区| 久久成人麻豆午夜电影| 一区二区三区中文字幕| 26uuu久久天堂性欧美| 欧美少妇xxx| 国产mv日韩mv欧美| 青青草精品视频| 一区二区三区四区中文字幕| 久久久久九九视频| 在线电影一区二区三区| 色一情一乱一乱一91av| 国产91色综合久久免费分享| 日本美女一区二区| 亚洲资源中文字幕| 亚洲少妇30p| 久久婷婷一区二区三区| 91麻豆精品国产91久久久使用方法 | 蜜桃av噜噜一区二区三区小说| 国产精品国模大尺度视频| 欧美不卡一区二区| 欧美日韩国产精选| 欧美系列日韩一区| 日本精品免费观看高清观看| 成人亚洲一区二区一| 激情综合色播激情啊| 免费久久99精品国产| 日韩成人免费电影| 午夜精品久久久久久久蜜桃app| 中文字幕制服丝袜一区二区三区 | 717成人午夜免费福利电影| 91九色02白丝porn| 91免费看`日韩一区二区| 国产99久久久久| 国产精品羞羞答答xxdd| 国产一区视频网站| 激情综合网av| 国产美女在线观看一区| 国产精品白丝av| 国产精品一线二线三线| 国产91在线看| aaa亚洲精品| 色88888久久久久久影院野外| 91久久一区二区| 欧美特级限制片免费在线观看| 色综合天天狠狠| 欧美视频日韩视频| 欧美精品tushy高清| 日韩免费看的电影| 久久精品亚洲国产奇米99| 久久综合99re88久久爱| 日本一区二区动态图| 国产精品麻豆视频| 亚洲综合免费观看高清在线观看| 亚洲一区二区四区蜜桃| 偷窥国产亚洲免费视频| 久久精品国产精品亚洲精品| 国产在线精品视频| 丰满岳乱妇一区二区三区| 99久久免费精品高清特色大片| 色8久久精品久久久久久蜜| 欧美日韩日日摸| 欧美精品一区二区三区四区| 国产日韩高清在线| 亚洲男人的天堂一区二区| 亚洲午夜影视影院在线观看| 美腿丝袜一区二区三区| 成人国产精品免费观看动漫| 91久久一区二区| 欧美变态凌虐bdsm| 中文字幕中文字幕一区二区| 亚瑟在线精品视频| 国产91丝袜在线18| 欧美日本视频在线| 日本一区二区在线不卡| 亚洲激情一二三区| 久久99久久久欧美国产| 在线视频一区二区三区| 日韩视频免费观看高清在线视频| 国产午夜精品一区二区| 亚洲一区二区欧美日韩 | 天天色图综合网| 国产酒店精品激情| 欧美无砖砖区免费| 久久久国际精品| 亚洲成av人片在线观看无码| 国内精品久久久久影院薰衣草| 色呦呦日韩精品| 2023国产精品| 亚洲va中文字幕| av不卡免费在线观看| 欧美成人国产一区二区| 亚洲精品五月天| 国产精品一区一区| 日韩午夜在线观看视频| 亚洲精品视频免费看| 国产精品亚洲专一区二区三区| 337p亚洲精品色噜噜狠狠| 综合激情成人伊人| 国产成人在线电影| 日韩欧美一卡二卡| 性久久久久久久| 欧洲另类一二三四区| 国产精品日韩精品欧美在线| 狠狠色丁香婷综合久久| 欧美人成免费网站| 一区二区三区四区五区视频在线观看| 国产成人综合视频| 欧美videofree性高清杂交| 亚洲午夜免费电影| 在线看国产一区| 自拍视频在线观看一区二区| 国产精品99久久久久久久vr | 久久精品夜色噜噜亚洲a∨| 免费在线观看一区| 在线综合+亚洲+欧美中文字幕| 亚洲激情图片一区| 97久久久精品综合88久久| 国产精品毛片a∨一区二区三区| 国产一二三精品| 久久久综合精品| 国产激情视频一区二区在线观看| 日韩欧美在线网站| 日韩二区在线观看| 制服丝袜亚洲播放| 日韩黄色免费电影| 欧美丰满少妇xxxxx高潮对白| 亚洲国产精品久久久久婷婷884| 色综合天天狠狠| 亚洲一区二区综合| 欧美视频一区二区三区四区| 亚洲精品久久久蜜桃| 色婷婷亚洲婷婷| 亚洲成年人影院| 欧美精品精品一区| 日韩成人伦理电影在线观看| 日韩欧美一级在线播放| 久久99国产精品免费网站| 欧美一区二区视频观看视频| 日本va欧美va精品| 2024国产精品| 94-欧美-setu| 亚洲成人激情自拍| 日韩一区二区三区高清免费看看| 老汉av免费一区二区三区| 久久人人爽人人爽| 成人av资源下载| 一区二区三区四区在线免费观看| 欧美日本乱大交xxxxx| 蜜芽一区二区三区| 国产亚洲美州欧州综合国| 成人av免费在线| 亚洲国产欧美在线| 91精品在线麻豆| 高潮精品一区videoshd| 亚洲欧美欧美一区二区三区| 欧美高清www午色夜在线视频| 国产一区二区看久久| 国产精品久久久久久久久久久免费看 | 中文字幕亚洲一区二区av在线| av一区二区久久|