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

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

?? psssigner.java

?? 內容:基于jdk1.4的加密算法的具體實現
?? JAVA
字號:
package org.bouncycastle.crypto.signers;import java.security.SecureRandom;import org.bouncycastle.crypto.AsymmetricBlockCipher;import org.bouncycastle.crypto.CipherParameters;import org.bouncycastle.crypto.CryptoException;import org.bouncycastle.crypto.DataLengthException;import org.bouncycastle.crypto.Digest;import org.bouncycastle.crypto.Signer;import org.bouncycastle.crypto.params.ParametersWithRandom;import org.bouncycastle.crypto.params.RSAKeyParameters;/** * RSA-PSS as described in PKCS# 1 v 2.1. * <p> * Note: the usual value for the salt length is the number of * bytes in the hash function. */public class PSSSigner    implements Signer{    static final public byte   TRAILER_IMPLICIT    = (byte)0xBC;    private Digest                      digest;    private AsymmetricBlockCipher       cipher;    private SecureRandom                random;    private int                         hLen;    private int                         sLen;    private int                         emBits;    private byte[]                      salt;    private byte[]                      mDash;    private byte[]                      block;    private byte                        trailer;    /**     * basic constructor     *     * @param cipher the assymetric cipher to use.     * @param digest the digest to use.     * @param sLen the length of the salt to use (in bytes).     */    public PSSSigner(        AsymmetricBlockCipher   cipher,        Digest                  digest,        int                     sLen)    {        this(cipher, digest, sLen, TRAILER_IMPLICIT);    }        public PSSSigner(        AsymmetricBlockCipher   cipher,        Digest                  digest,        int                     sLen,        byte                    trailer)    {        this.cipher = cipher;        this.digest = digest;        this.hLen = digest.getDigestSize();        this.sLen = sLen;        this.salt = new byte[sLen];        this.mDash = new byte[8 + sLen + hLen];        this.trailer = trailer;    }    public void init(        boolean                 forSigning,        CipherParameters        param)    {        RSAKeyParameters  kParam = null;        if (param instanceof ParametersWithRandom)        {            ParametersWithRandom    p = (ParametersWithRandom)param;            kParam = (RSAKeyParameters)p.getParameters();            random = p.getRandom();        }        else        {            kParam = (RSAKeyParameters)param;            if (forSigning)            {                random = new SecureRandom();            }        }        cipher.init(forSigning, kParam);        emBits = kParam.getModulus().bitLength() - 1;        block = new byte[(emBits + 7) / 8];        reset();    }    /**     * clear possible sensitive data     */    private void clearBlock(        byte[]  block)    {        for (int i = 0; i != block.length; i++)        {            block[i] = 0;        }    }    /**     * update the internal digest with the byte b     */    public void update(        byte    b)    {        digest.update(b);    }    /**     * update the internal digest with the byte array in     */    public void update(        byte[]  in,        int     off,        int     len)    {        digest.update(in, off, len);    }    /**     * reset the internal state     */    public void reset()    {        digest.reset();    }    /**     * 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 (emBits < (8 * hLen + 8 * sLen + 9))        {            throw new DataLengthException("encoding error");        }        digest.doFinal(mDash, mDash.length - hLen - sLen);        if (sLen != 0)        {            random.nextBytes(salt);            System.arraycopy(salt, 0, mDash, mDash.length - sLen, sLen);        }        byte[]  h = new byte[hLen];        digest.update(mDash, 0, mDash.length);        digest.doFinal(h, 0);        block[block.length - sLen - 1 - hLen - 1] = 0x01;        System.arraycopy(salt, 0, block, block.length - sLen - hLen - 1, sLen);        byte[] dbMask = maskGeneratorFunction1(h, 0, h.length, block.length - hLen - 1);        for (int i = 0; i != dbMask.length; i++)        {            block[i] ^= dbMask[i];        }        block[0] &= (0xff >> ((block.length * 8) - emBits));        System.arraycopy(h, 0, block, block.length - hLen - 1, hLen);        block[block.length - 1] = trailer;        byte[]  b = cipher.processBlock(block, 0, block.length);        clearBlock(block);        return b;    }    /**     * return true if the internal state represents the signature described     * in the passed in array.     */    public boolean verifySignature(        byte[]      signature)    {        if (emBits < (8 * hLen + 8 * sLen + 9))        {            return false;        }        digest.doFinal(mDash, mDash.length - hLen - sLen);        try        {            byte[] b = cipher.processBlock(signature, 0, signature.length);            System.arraycopy(b, 0, block, block.length - b.length, b.length);        }        catch (Exception e)        {            return false;        }        if (block[block.length - 1] != trailer)        {            clearBlock(block);            return false;        }        byte[] dbMask = maskGeneratorFunction1(block, block.length - hLen - 1, hLen, block.length - hLen - 1);        for (int i = 0; i != dbMask.length; i++)        {            block[i] ^= dbMask[i];        }        block[0] &= (0xff >> ((block.length * 8) - emBits));        for (int i = 0; i != block.length - hLen - sLen - 2; i++)        {            if (block[i] != 0)            {                clearBlock(block);                return false;            }        }        if (block[block.length - hLen - sLen - 2] != 0x01)        {            clearBlock(block);            return false;        }        System.arraycopy(block, block.length - sLen - hLen - 1, mDash, mDash.length - sLen, sLen);        digest.update(mDash, 0, mDash.length);        digest.doFinal(mDash, mDash.length - hLen);        for (int i = block.length - hLen - 1, j = mDash.length - hLen;                                                 j != mDash.length; i++, j++)        {            if ((block[i] ^ mDash[j]) != 0)            {                clearBlock(mDash);                clearBlock(block);                return false;            }        }        clearBlock(mDash);        clearBlock(block);        return true;    }    /**     * 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[hLen];        byte[]  C = new byte[4];        int     counter = 0;        digest.reset();        while (counter < (length / hLen))        {            ItoOSP(counter, C);            digest.update(Z, zOff, zLen);            digest.update(C, 0, C.length);            digest.doFinal(hashBuf, 0);            System.arraycopy(hashBuf, 0, mask, counter * hLen, hLen);                        counter++;        }        if ((counter * hLen) < length)        {            ItoOSP(counter, C);            digest.update(Z, zOff, zLen);            digest.update(C, 0, C.length);            digest.doFinal(hashBuf, 0);            System.arraycopy(hashBuf, 0, mask, counter * hLen, mask.length - (counter * hLen));        }        return mask;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品嫩草99a| 一区二区三区在线观看视频| 国产亚洲人成网站| 一区二区三区在线视频观看 | 一本一道波多野结衣一区二区| 在线视频你懂得一区二区三区| 亚洲精品一区二区三区福利 | 色悠悠亚洲一区二区| 日韩欧美一二三| 亚洲成人福利片| 972aa.com艺术欧美| 26uuu久久综合| 免费视频最近日韩| 欧美老年两性高潮| 亚洲欧美在线视频| 成人听书哪个软件好| 精品美女被调教视频大全网站| 亚洲风情在线资源站| 色综合 综合色| 亚洲精选在线视频| 一本大道av一区二区在线播放 | 1区2区3区精品视频| 国产一区二区主播在线| 欧美日韩亚洲综合在线 | 色噜噜狠狠成人中文综合 | 国产精品91一区二区| 91精品国产福利| 首页亚洲欧美制服丝腿| 欧美日韩日日摸| 偷窥少妇高潮呻吟av久久免费| 色偷偷88欧美精品久久久| 亚洲图片激情小说| 91亚洲精华国产精华精华液| 成人免费在线播放视频| 日韩欧美中文字幕一区| 亚洲成人免费观看| 91精品麻豆日日躁夜夜躁| 亚洲电影你懂得| 欧美老肥妇做.爰bbww| 日本不卡的三区四区五区| 555www色欧美视频| 美腿丝袜在线亚洲一区 | 在线观看视频一区二区 | **网站欧美大片在线观看| 成人av电影在线观看| 亚洲乱码中文字幕| 欧美日韩中文一区| 免费高清成人在线| 国产亚洲污的网站| 97se亚洲国产综合自在线不卡| 亚洲黄色尤物视频| 日韩一区二区三区在线视频| 韩国成人在线视频| 亚洲少妇30p| 91精品久久久久久久91蜜桃| 精品写真视频在线观看| 国产精品欧美久久久久一区二区| 97精品超碰一区二区三区| 亚洲国产视频直播| 精品国产麻豆免费人成网站| 成人免费不卡视频| 天堂精品中文字幕在线| 日韩精品一区二区三区在线播放 | 久久精品无码一区二区三区| 91在线观看视频| 奇米777欧美一区二区| 亚洲国产精品激情在线观看| 欧美亚洲动漫制服丝袜| 韩国精品久久久| 亚洲综合在线第一页| 亚洲精品一线二线三线无人区| 91免费观看视频在线| 国内不卡的二区三区中文字幕| 亚洲欧洲综合另类| 欧美精品一区二区久久久| 91婷婷韩国欧美一区二区| 久久精品免费观看| 亚洲综合久久久| 中文字幕第一区| 日韩欧美一级二级三级久久久| 91在线国产福利| 国产美女精品人人做人人爽| 亚洲愉拍自拍另类高清精品| 国产日韩欧美激情| 欧美一级生活片| 日本乱人伦一区| 盗摄精品av一区二区三区| 日韩不卡一区二区| 亚洲国产综合色| 国产精品系列在线| wwwwww.欧美系列| 91 com成人网| 欧美性猛片aaaaaaa做受| 成人免费看的视频| 国产尤物一区二区| 久久精品国产77777蜜臀| 亚洲欧洲日韩综合一区二区| 国产亚洲1区2区3区| 91精品国产综合久久精品麻豆| 91黄色免费观看| a在线播放不卡| 成人性生交大合| 国产激情精品久久久第一区二区| 老司机一区二区| 琪琪久久久久日韩精品| 日韩精品一级二级| 天天影视网天天综合色在线播放| 亚洲一区二区三区小说| 亚洲桃色在线一区| 亚洲欧美另类图片小说| 中文字幕中文字幕在线一区| 欧美激情一区二区在线| 国产日韩欧美精品电影三级在线| 欧美精品一区二区三区蜜桃视频| 日韩一级视频免费观看在线| 欧美一区二区三区啪啪| 欧美电视剧免费观看| 精品少妇一区二区三区| 久久综合色之久久综合| 国产日韩欧美一区二区三区综合| 久久免费看少妇高潮| 久久久久久久久久电影| 国产精品丝袜在线| 国产精品对白交换视频| 一区二区三区不卡视频在线观看| 亚洲精品日韩一| 午夜av电影一区| 老司机免费视频一区二区三区| 九色|91porny| 国产精品99久久不卡二区| www.日韩av| 欧美曰成人黄网| 欧美一区二区三区喷汁尤物| 精品欧美一区二区在线观看| 中文字幕乱码日本亚洲一区二区| 综合色天天鬼久久鬼色| 亚洲国产美国国产综合一区二区 | 中文字幕一区在线观看视频| 亚洲精品视频一区| 日韩av在线发布| 国产成人综合在线观看| 色婷婷久久久久swag精品| 91精品欧美久久久久久动漫| 久久久青草青青国产亚洲免观| 1区2区3区精品视频| 午夜不卡av免费| 粉嫩av一区二区三区| 欧美日韩卡一卡二| 久久久久青草大香线综合精品| 亚洲精选视频免费看| 久久精品国产99国产精品| 99r国产精品| 日韩久久精品一区| 亚洲乱码国产乱码精品精98午夜 | 亚洲一区二区在线免费看| 玖玖九九国产精品| 91亚洲国产成人精品一区二区三| 欧美一区二区精品| 亚洲三级视频在线观看| 韩国精品主播一区二区在线观看 | 激情都市一区二区| 99久久99精品久久久久久| 日韩亚洲欧美中文三级| 亚洲视频资源在线| 国产一区欧美二区| 欧美美女喷水视频| 国产精品欧美一区喷水| 久久99国产精品麻豆| 91国偷自产一区二区开放时间| 久久亚洲私人国产精品va媚药| 亚洲一区在线视频| av在线不卡电影| 久久久精品蜜桃| 免费成人在线观看视频| 91久久精品一区二区| 欧美国产激情一区二区三区蜜月| 日本在线不卡一区| 欧美少妇性性性| 尤物视频一区二区| 99久久精品国产毛片| 久久久久久久久岛国免费| 麻豆91免费看| 欧美一区二区三区在线电影 | 欧美色中文字幕| 亚洲欧美在线观看| 懂色av一区二区三区免费看| 精品久久一区二区| 男女激情视频一区| 欧美精品v国产精品v日韩精品 | 日本高清无吗v一区| 国产精品久久久久影视| 大美女一区二区三区| 久久综合网色—综合色88| 激情深爱一区二区| 久久中文字幕电影| 国内精品久久久久影院薰衣草| 亚洲人成精品久久久久| av亚洲精华国产精华精华| 国产精品久久久久久久久免费丝袜| 国产二区国产一区在线观看|