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

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

?? iso9796d2psssigner.java

?? 內容:基于jdk1.4的加密算法的具體實現
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
        block[off] = 0x01;          System.arraycopy(mBuf, 0, block, off + 1, messageLength);        System.arraycopy(salt, 0, block, off + 1 + messageLength, salt.length);        byte[] dbMask = maskGeneratorFunction1(hash, 0, hash.length, block.length - hLen - tLength);        for (int i = 0; i != dbMask.length; i++)        {            block[i] ^= dbMask[i];        }                System.arraycopy(hash, 0, block, block.length - hLen - tLength, hLen);                if (trailer == TRAILER_IMPLICIT)        {            block[block.length - 1] = (byte)TRAILER_IMPLICIT;        }        else        {            block[block.length - 2] = (byte)(trailer >>> 8);            block[block.length - 1] = (byte)trailer;        }                block[0] &= 0x7f;        byte[]  b = cipher.processBlock(block, 0, block.length);        clearBlock(mBuf);        clearBlock(block);        messageLength = 0;        return b;    }    /**     * return true if the signature represents a ISO9796-2 signature     * for the passed in message.     */    public boolean verifySignature(        byte[]      signature)    {        byte[]      block = null;        try        {            block = cipher.processBlock(signature, 0, signature.length);        }        catch (Exception e)        {            return false;        }                //        // adjust block size for leading zeroes if necessary        //        if (block.length < (keyBits + 7) / 8)        {            byte[] tmp = new byte[(keyBits + 7) / 8];            System.arraycopy(block, 0, tmp, tmp.length - block.length, block.length);            block = tmp;        }        int     tLength = 0;        if (((block[block.length - 1] & 0xFF) ^ 0xBC) == 0)        {            tLength = 1;        }        else        {            int sigTrail = ((block[block.length - 2] & 0xFF) << 8) | (block[block.length - 1] & 0xFF);            switch (sigTrail)            {            case TRAILER_RIPEMD160:                    if (!(digest instanceof RIPEMD160Digest))                    {                        throw new IllegalStateException("signer should be initialised with RIPEMD160");                    }                    break;            case TRAILER_SHA1:                    if (!(digest instanceof SHA1Digest))                    {                        throw new IllegalStateException("signer should be initialised with SHA1");                    }                    break;            case TRAILER_RIPEMD128:                    if (!(digest instanceof RIPEMD128Digest))                    {                        throw new IllegalStateException("signer should be initialised with RIPEMD128");                    }                    break;            default:                throw new IllegalArgumentException("unrecognised hash in signature");            }            tLength = 2;        }        //        // calculate H(m2)        //        byte[]    m2Hash = new byte[hLen];        digest.doFinal(m2Hash, 0);                //        // remove the mask        //        byte[] dbMask = maskGeneratorFunction1(block, block.length - hLen - tLength, hLen, block.length - hLen - tLength);        for (int i = 0; i != dbMask.length; i++)        {            block[i] ^= dbMask[i];        }        block[0] &= 0x7f;                //        // find out how much padding we've got        //        int mStart = 0;        for (mStart = 0; mStart != block.length; mStart++)        {            if (block[mStart] == 0x01)            {                break;            }        }        mStart++;        if (mStart >= block.length)        {            clearBlock(block);            return false;        }                if (mStart > 1)        {            fullMessage = true;        }        else        {            fullMessage = false;        }                recoveredMessage = new byte[dbMask.length - mStart - saltLength];        System.arraycopy(block, mStart, recoveredMessage, 0, recoveredMessage.length);        //        // check the hashes        //        byte[]  C = new byte[8];        LtoOSP(recoveredMessage.length * 8, C);                digest.update(C, 0, C.length);        if (recoveredMessage.length != 0)        {            digest.update(recoveredMessage, 0, recoveredMessage.length);        }        digest.update(m2Hash, 0, m2Hash.length);        byte[]  hash = new byte[digest.getDigestSize()];        digest.update(block, mStart + recoveredMessage.length, dbMask.length - mStart - recoveredMessage.length);                digest.doFinal(hash, 0);        int off = block.length - tLength - hash.length;                for (int i = 0; i != hash.length; i++)        {            if (hash[i] != block[off + i])            {                clearBlock(block);                clearBlock(hash);                clearBlock(recoveredMessage);                fullMessage = false;                                return false;            }        }        //        // if they've input a message check what we've recovered against        // what was input.        //        if (messageLength != 0)        {            if (!isSameAs(mBuf, recoveredMessage))            {                clearBlock(mBuf);                clearBlock(block);                               return false;            }        }                clearBlock(mBuf);        clearBlock(block);        messageLength = 0;        return true;    }    /**     * Return true if the full message was recoveredMessage.     *      * @return true on full message recovery, false otherwise, or if not sure.     * @see org.bouncycastle.crypto.SignerWithRecovery#hasFullMessage()     */    public boolean hasFullMessage()    {        return fullMessage;    }    /**     * Return a reference to the recoveredMessage message.     *      * @return the full/partial recoveredMessage message.     * @see org.bouncycastle.crypto.SignerWithRecovery#getRecoveredMessage()     */    public byte[] getRecoveredMessage()    {        return recoveredMessage;    }        /**     * 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);    }    /**     * long to octet string.     */    private void LtoOSP(        long    l,        byte[]  sp)    {        sp[0] = (byte)(l >>> 56);        sp[1] = (byte)(l >>> 48);        sp[2] = (byte)(l >>> 40);        sp[3] = (byte)(l >>> 32);        sp[4] = (byte)(l >>> 24);        sp[5] = (byte)(l >>> 16);        sp[6] = (byte)(l >>> 8);        sp[7] = (byte)(l >>> 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一区二区三区免费野_久草精品视频
国v精品久久久网| 成人看片黄a免费看在线| 亚洲国产高清不卡| 久久亚洲影视婷婷| 久久久久9999亚洲精品| 精品成人佐山爱一区二区| 欧美一区二区三区在线视频| 欧美日韩精品专区| 欧美一区二区三区视频免费播放| 91精品国产综合久久久蜜臀粉嫩 | 99视频一区二区| 成人国产精品视频| 色综合色综合色综合| 91久久精品一区二区| 欧美在线综合视频| 欧美精品丝袜中出| 久久一夜天堂av一区二区三区| 日韩欧美另类在线| 久久综合九色综合97婷婷| 国产欧美一区二区在线| 国产精品乱码一区二区三区软件| 综合电影一区二区三区| 亚洲国产精品嫩草影院| 人禽交欧美网站| 国产成人免费视频网站高清观看视频| 成人黄色片在线观看| 日本高清不卡视频| 日韩一区和二区| 中文字幕不卡在线| 午夜在线成人av| 国产精品自拍av| 欧美网站大全在线观看| 26uuu亚洲综合色| 亚洲免费看黄网站| 久久精品国产亚洲a| 成人黄色一级视频| 欧美一级日韩免费不卡| 国产精品嫩草99a| 日韩在线卡一卡二| 成人av免费网站| 日韩免费电影一区| 一区二区三区日韩欧美精品| 久久丁香综合五月国产三级网站| 99久久精品国产导航| 欧美videossexotv100| 一区二区视频免费在线观看| 国产一区二区三区黄视频| 欧美日韩免费在线视频| 国产精品乱码一区二三区小蝌蚪| 免费久久精品视频| 欧美午夜在线观看| 国产精品网站一区| 久久99精品久久久| 8v天堂国产在线一区二区| 亚洲人精品午夜| 国产99久久久国产精品免费看| 欧美精品 日韩| 亚洲欧美日韩综合aⅴ视频| 国产不卡在线一区| 欧美精品一区男女天堂| 琪琪久久久久日韩精品| 欧美日韩在线综合| 亚洲一级二级在线| 色欧美日韩亚洲| 最近中文字幕一区二区三区| 国产二区国产一区在线观看| 欧美电视剧在线观看完整版| 天堂在线亚洲视频| 欧美丝袜丝nylons| 亚洲高清不卡在线| 欧美亚洲一区三区| 亚洲激情第一区| 色系网站成人免费| 亚洲综合免费观看高清完整版 | 青青草原综合久久大伊人精品 | 91福利在线免费观看| 国产精品日产欧美久久久久| 国产精品综合一区二区三区| 精品国产乱码久久久久久闺蜜| 男人的天堂久久精品| 日韩一区二区麻豆国产| 青青草一区二区三区| 欧美刺激脚交jootjob| 久久国产三级精品| 久久综合久久鬼色| 成人激情综合网站| 亚洲你懂的在线视频| 欧美亚洲一区二区在线| 图片区小说区国产精品视频| 91精品国产一区二区三区| 久久99久国产精品黄毛片色诱| 精品国产伦一区二区三区观看方式 | 中文字幕一区二区三区精华液| 成人黄动漫网站免费app| 亚洲三级理论片| 欧美日韩国产一级二级| 蜜桃av一区二区三区电影| 欧美精品一区二区三区高清aⅴ| 韩国av一区二区三区| 国产精品素人一区二区| 欧美午夜精品理论片a级按摩| 天天免费综合色| 久久精品一区二区三区不卡牛牛| 国产69精品久久久久777| 亚洲视频小说图片| 91精品免费在线观看| 国产成人免费视频网站高清观看视频| 欧美激情一区二区| 欧美伊人久久大香线蕉综合69| 蜜臀av一区二区三区| 中文字幕乱码亚洲精品一区| 精品视频在线视频| 国产乱国产乱300精品| 亚洲日本va午夜在线电影| 日韩欧美一级片| 91美女视频网站| 国产精品456露脸| 洋洋成人永久网站入口| 久久久久久久久一| 欧美挠脚心视频网站| 高潮精品一区videoshd| 免费看日韩a级影片| 亚洲美女免费在线| 国产日韩综合av| 欧美一区二区在线不卡| 91国模大尺度私拍在线视频| 国产在线视频不卡二| 肉色丝袜一区二区| 亚洲欧美福利一区二区| 国产亚洲精品aa午夜观看| 这里只有精品免费| 欧美三级日韩在线| 99re这里只有精品首页| 国产麻豆一精品一av一免费| 午夜成人免费视频| 亚洲精选在线视频| 国产精品嫩草影院com| 久久亚洲春色中文字幕久久久| 9191成人精品久久| 欧美色中文字幕| 色综合色狠狠天天综合色| 成人精品视频一区二区三区| 另类小说图片综合网| 日韩电影网1区2区| 视频在线观看一区二区三区| 亚洲综合色噜噜狠狠| 一区二区成人在线| 一区二区三区在线免费视频| 国产精品第四页| 亚洲免费观看高清| 亚洲特级片在线| 中文字幕在线免费不卡| 国产精品久久久久久久浪潮网站| 日本一区二区三区在线不卡| 久久精品视频一区| 国产欧美日韩综合精品一区二区| 久久久久久久综合狠狠综合| 久久综合久久久久88| 久久久久久99久久久精品网站| 欧美www视频| 国产日韩欧美综合在线| 欧美极品美女视频| 亚洲人成电影网站色mp4| 亚洲精品乱码久久久久久| 亚洲无线码一区二区三区| 亚洲在线视频一区| 日韩**一区毛片| 九一九一国产精品| 成人免费毛片app| 在线观看日韩一区| 91精品国产丝袜白色高跟鞋| 精品久久久三级丝袜| 日本一区免费视频| 亚洲精品国久久99热| 日韩av电影天堂| 国产精一品亚洲二区在线视频| 国产91精品一区二区麻豆亚洲| kk眼镜猥琐国模调教系列一区二区| 99国产精品国产精品毛片| 欧美性色黄大片手机版| 欧美电影免费观看高清完整版| 国产日韩欧美综合一区| 一区二区成人在线视频| 秋霞电影一区二区| 成人app网站| 91麻豆精品国产| 国产精品亲子伦对白| 香蕉久久夜色精品国产使用方法 | 欧美精品一区二区不卡| 国产精品毛片大码女人| 污片在线观看一区二区| 国产成人在线观看免费网站| 在线免费av一区| 久久亚洲二区三区| 亚洲已满18点击进入久久| 国产成人在线免费观看| 欧美电影一区二区三区| 国产精品福利一区| 国内精品国产成人| 欧美女孩性生活视频|