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

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

?? gost3411digest.java

?? 內(nèi)容:基于jdk1.4的加密算法的具體實(shí)現(xiàn)
?? JAVA
字號(hào):
package org.bouncycastle.crypto.digests;import org.bouncycastle.crypto.*;import org.bouncycastle.crypto.params.KeyParameter;import org.bouncycastle.crypto.params.ParametersWithSBox;import org.bouncycastle.crypto.engines.GOST28147Engine;/** * implementation of GOST R 34.11-94 */public class GOST3411Digest    implements ExtendedDigest{    private static final int    DIGEST_LENGTH = 32;    private byte[]   H = new byte[32], L = new byte[32],                     M = new byte[32], Sum = new byte[32];    private byte[][] C = new byte[4][32];    private byte[]  xBuf = new byte[32];    private int  xBufOff;    private long byteCount;        private BlockCipher cipher = new GOST28147Engine();    /**     * Standard constructor     */    public GOST3411Digest()    {        cipher.init(true, new ParametersWithSBox(null, GOST28147Engine.getSBox("D-A")));                reset();    }    /**     * Copy constructor.  This will copy the state of the provided     * message digest.     */    public GOST3411Digest(GOST3411Digest t)    {        cipher.init(true, new ParametersWithSBox(null, GOST28147Engine.getSBox("D-A")));                reset();        System.arraycopy(t.H, 0, this.H, 0, t.H.length);        System.arraycopy(t.L, 0, this.L, 0, t.L.length);        System.arraycopy(t.M, 0, this.M, 0, t.M.length);        System.arraycopy(t.Sum, 0, this.Sum, 0, t.Sum.length);        System.arraycopy(t.C[1], 0, this.C[1], 0, t.C[1].length);        System.arraycopy(t.C[2], 0, this.C[2], 0, t.C[2].length);        System.arraycopy(t.C[3], 0, this.C[3], 0, t.C[3].length);        System.arraycopy(t.xBuf, 0, this.xBuf, 0, t.xBuf.length);                this.xBufOff = t.xBufOff;        this.byteCount = t.byteCount;    }    public String getAlgorithmName()    {        return "GOST3411";    }    public int getDigestSize()    {        return DIGEST_LENGTH;    }    public void update(byte in)    {        xBuf[xBufOff++] = in;        if (xBufOff == xBuf.length)        {            sumByteArray(xBuf); // calc sum M            processBlock(xBuf, 0);            xBufOff = 0;        }        byteCount++;    }    public void update(byte[] in, int inOff, int len)    {        while ((xBufOff != 0) && (len > 0))        {            update(in[inOff]);            inOff++;            len--;        }        while (len > xBuf.length)        {            System.arraycopy(in, inOff, xBuf, 0, xBuf.length);            sumByteArray(xBuf); // calc sum M            processBlock(xBuf, 0);            inOff += xBuf.length;            len -= xBuf.length;            byteCount += xBuf.length;        }        // load in the remainder.        while (len > 0)        {            update(in[inOff]);            inOff++;            len--;        }    }    // (i + 1 + 4(k - 1)) = 8i + k      i = 0-3, k = 1-8    private byte[] K = new byte[32];    private byte[] P(byte[] in)    {        for(int k = 0; k < 8; k++)        {            K[0 + 4*k] = in[ 0 + k];            K[1 + 4*k] = in[ 8 + k];            K[2 + 4*k] = in[16 + k];            K[3 + 4*k] = in[24 + k];        }        return K;    }    //A (x) = (x0 ^ x1) || x3 || x2 || x1    byte[] a = new byte[8];    private byte[] A(byte[] in)    {        for(int j=0; j<8; j++)        {            a[j]=(byte)(in[j] ^ in[j+8]);        }        System.arraycopy(in, 8, in, 0, 24);        System.arraycopy(a, 0, in, 24, 8);        return in;    }    //Encrypt function, ECB mode    private void E(byte[] key, byte[] s, int sOff, byte[] in, int inOff)    {        cipher.init(true, new KeyParameter(key));                cipher.processBlock(in, inOff, s, sOff);    }    // (in:) n16||..||n1 ==> (out:) n1^n2^n3^n4^n13^n16||n16||..||n2    short[] wS = new short[16], w_S = new short[16];    private void fw(byte[] in)    {        cpyBytesToShort(in, wS);        w_S[15] = (short)(wS[0] ^ wS[1] ^ wS[2] ^ wS[3] ^ wS[12] ^ wS[15]);        for (int i = 14; i >= 0; i--)        {            w_S[i] = wS[i+1];        }        cpyShortToBytes(w_S, in);    }    // block processing    byte[] S = new byte[32];    byte[] U = new byte[32], V = new byte[32], W = new byte[32];    protected void processBlock(byte[] in, int inOff)    {        System.arraycopy(in, inOff, M, 0, 32);        //key step 1        int i=0;        // H = h3 || h2 || h1 || h0        // S = s3 || s2 || s1 || s0        System.arraycopy(H, 0, U, 0, 32);        System.arraycopy(M, 0, V, 0, 32);        for (int j=0; j<32; j++)        {            W[j] = (byte)(U[j]^V[j]);        }        // Encrypt gost28147-ECB        E(P(W), S, 0, H, 0); // s0 = EK0 [h0]        //keys step 2,3,4        for (i=1; i<4; i++)        {            byte[] tmpA = A(U);            for (int j=0; j<32; j++)            {                U[j] = (byte)(tmpA[j] ^ C[i][j]);            }            V = A(A(V));            for (int j=0; j<32; j++)            {                W[j] = (byte)(U[j]^V[j]);            }            // Encrypt gost28147-ECB            E(P(W), S, i * 8, H, i * 8); // si = EKi [hi]        }        // x(M, H) = y61(H^y(M^y12(S)))        for(int n = 0; n < 12; n++)        {            fw(S);        }        for(int n = 0; n < 32; n++)        {            S[n] = (byte)(S[n] ^ M[n]);        }        fw(S);        for(int n = 0; n < 32; n++)        {            S[n] = (byte)(H[n] ^ S[n]);        }        for(int n = 0; n < 61; n++)        {            fw(S);        }        for(int j=0; j < H.length; j++)        {            H[j] = S[j];        }    }    private void finish()    {        LongToBytes(byteCount * 8, L, 0); // get length into L (byteCount * 8 = bitCount)        while (xBufOff != 0)        {            update((byte)0);        }        processBlock(L, 0);        processBlock(Sum, 0);    }    public int doFinal(        byte[]  out,        int     outOff)    {        finish();        for(int i=0; i<H.length; i++)        {            out[i+outOff] = H[i];        }        reset();        return DIGEST_LENGTH;    }    /**     * reset the chaining variables to the IV values.     */    private static byte[]  C2 = {       0x00,(byte)0xFF,0x00,(byte)0xFF,0x00,(byte)0xFF,0x00,(byte)0xFF,       (byte)0xFF,0x00,(byte)0xFF,0x00,(byte)0xFF,0x00,(byte)0xFF,0x00,       0x00,(byte)0xFF,(byte)0xFF,0x00,(byte)0xFF,0x00,0x00,(byte)0xFF,       (byte)0xFF,0x00,0x00,0x00,(byte)0xFF,(byte)0xFF,0x00,(byte)0xFF};    public void reset()    {        byteCount = 0;        xBufOff = 0;        for(int i=0; i<H.length; i++)        {            H[i] = 0;  // start vector H        }        for(int i=0; i<L.length; i++)        {            L[i] = 0;        }        for(int i=0; i<M.length; i++)        {            M[i] = 0;        }        for(int i=0; i<C[1].length; i++)        {            C[1][i] = 0;  // real index C = +1 because index array with 0.        }        for(int i=0; i<C[3].length; i++)        {            C[3][i] = 0;        }        for(int i=0; i<Sum.length; i++)        {            Sum[i] = 0;        }        for(int i = 0; i < xBuf.length; i++)        {            xBuf[i] = 0;        }        System.arraycopy(C2, 0, C[2], 0, C2.length);    }    //  256 bitsblock modul -> (Sum + a mod (2^256))    private void sumByteArray(byte[] in)    {        int carry = 0;        for (int i = 0; i != Sum.length; i++)        {            int sum = (Sum[i] & 0xff) + (in[i] & 0xff) + carry;            Sum[i] = (byte)sum;            carry = sum >>> 8;        }    }    private void LongToBytes(long r, byte[] out, int outOff)    {        out[outOff + 7] = (byte)(r >> 56);        out[outOff + 6] = (byte)(r >> 48);        out[outOff + 5] = (byte)(r >> 40);        out[outOff + 4] = (byte)(r >> 32);        out[outOff + 3] = (byte)(r >> 24);        out[outOff + 2] = (byte)(r >> 16);        out[outOff + 1] = (byte)(r >> 8);        out[outOff] = (byte)r;    }    private void cpyBytesToShort(byte[] S, short[] wS)    {        for(int i=0; i<S.length/2; i++)        {            wS[i] = (short)(((S[i*2+1]<<8)&0xFF00)|(S[i*2]&0xFF));        }    }    private void cpyShortToBytes(short[] wS, byte[] S)    {        for(int i=0; i<S.length/2; i++)         {            S[i*2 + 1] = (byte)(wS[i] >> 8);            S[i*2] = (byte)wS[i];        }    }   public int getByteLength()    {      return 32;   }}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产99久久久国产精品| 欧美人妇做爰xxxⅹ性高电影 | 日韩激情一二三区| 国产精品美女久久久久久久网站| 日韩精品中午字幕| 欧美精品久久一区二区三区| 91亚洲男人天堂| 精品一区二区影视| 免费观看30秒视频久久| 日日夜夜免费精品| 一区二区三区高清| 亚洲综合网站在线观看| 亚洲欧美国产77777| 亚洲日本成人在线观看| 26uuu色噜噜精品一区| 成人精品一区二区三区四区| av电影天堂一区二区在线| 91蝌蚪porny九色| 欧美中文字幕亚洲一区二区va在线| 色婷婷久久一区二区三区麻豆| 色综合久久中文综合久久牛| 欧美日韩www| www国产精品av| 亚洲国产经典视频| 亚洲一区成人在线| 青青草伊人久久| 国产成人自拍在线| 91捆绑美女网站| 欧美一区二区三级| 国产欧美一区二区精品秋霞影院| 国产精品亲子乱子伦xxxx裸| 一区二区三区在线视频播放| 免费精品99久久国产综合精品| 国产一区不卡在线| 91免费视频观看| 日韩一区二区在线播放| 国产农村妇女精品| 亚洲成人第一页| 国产精品一级片在线观看| 91亚洲精品一区二区乱码| 91精品久久久久久久久99蜜臂| 国产日韩欧美一区二区三区综合| 亚洲欧美偷拍三级| 久草热8精品视频在线观看| 丁香激情综合国产| 欧美酷刑日本凌虐凌虐| 国产免费成人在线视频| 亚洲成人自拍偷拍| 国产69精品久久久久毛片| 欧美体内she精视频| 国产日韩精品一区二区三区在线| 亚洲永久精品大片| 国产成人自拍在线| 欧美精品免费视频| 国产精品国产三级国产普通话三级| 天堂午夜影视日韩欧美一区二区| 高清在线不卡av| 555www色欧美视频| 亚洲精品亚洲人成人网在线播放| 韩国毛片一区二区三区| 欧美人狂配大交3d怪物一区| 国产精品国产三级国产aⅴ入口| 日本va欧美va精品| 色婷婷一区二区三区四区| 国产午夜精品一区二区| 日本v片在线高清不卡在线观看| 色婷婷av一区| 欧美激情在线一区二区| 久久精品国产澳门| 欧美日韩国产成人在线免费| 国产精品福利一区二区三区| 国产一区二区三区久久悠悠色av| 欧美日本韩国一区| 亚洲欧美另类小说视频| 成人一级片在线观看| 日韩欧美成人激情| 视频一区二区不卡| 欧美性生活一区| 亚洲女厕所小便bbb| 国产成人福利片| 久久嫩草精品久久久精品一| 日本成人超碰在线观看| 欧美日本精品一区二区三区| 一区二区三区四区中文字幕| 99久久久无码国产精品| 国产精品热久久久久夜色精品三区 | 欧美国产激情二区三区| 韩国av一区二区三区在线观看| 欧美一级在线免费| 青青草成人在线观看| 欧美日韩精品免费观看视频| 亚洲国产视频一区二区| 在线精品国精品国产尤物884a| 日韩毛片视频在线看| 99re视频精品| 国产精品成人一区二区艾草 | 欧美日韩精品一区二区天天拍小说 | 国产成人欧美日韩在线电影| 精品久久人人做人人爱| 精品亚洲国内自在自线福利| 精品国精品自拍自在线| 久久国产精品72免费观看| 精品久久久久香蕉网| 久久成人av少妇免费| 久久综合色综合88| 国产精品一区二区在线播放| 国产视频一区在线观看| 国产成人午夜精品影院观看视频| 久久久久久久久久久黄色| 国产成人av电影在线| 国产精品视频免费看| 99久久亚洲一区二区三区青草| 国产精品久久久久久久久动漫| 成人不卡免费av| 综合分类小说区另类春色亚洲小说欧美| www.av精品| 亚洲老妇xxxxxx| 欧美日韩大陆一区二区| 日本午夜一区二区| 久久看人人爽人人| av电影在线观看完整版一区二区| 亚洲人精品一区| 欧美日韩一区二区欧美激情| 日韩av电影免费观看高清完整版| 欧美成人a∨高清免费观看| 国产成人日日夜夜| 一区二区三区在线观看视频| 欧美理论在线播放| 国产一区二区主播在线| 国产精品久久久久天堂| 欧美日韩一区二区在线观看视频| 麻豆成人91精品二区三区| 国产亚洲一区二区三区在线观看| 不卡高清视频专区| 偷偷要91色婷婷| 久久伊99综合婷婷久久伊| av日韩在线网站| 天天亚洲美女在线视频| wwwwww.欧美系列| 色综合天天天天做夜夜夜夜做| 婷婷综合五月天| 日本一区二区视频在线| 欧美色图在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 国产在线精品免费| 亚洲色欲色欲www| 日韩欧美在线不卡| 91在线小视频| 美女免费视频一区二区| 亚洲色图清纯唯美| 91精品国产91热久久久做人人| 国产xxx精品视频大全| 亚洲最新在线观看| 国产欧美一二三区| 欧美日韩aaaaaa| 北条麻妃一区二区三区| 日韩精品一区第一页| 国产精品看片你懂得| 91麻豆精品国产| 91麻豆swag| 国产精品一区二区三区网站| 无码av免费一区二区三区试看| 欧美国产1区2区| 日韩美女主播在线视频一区二区三区| av在线一区二区| 国产一区二区电影| 免费在线看成人av| 一区二区三区中文在线| 国产人成亚洲第一网站在线播放 | 樱花影视一区二区| 久久综合99re88久久爱| 欧美人妇做爰xxxⅹ性高电影| 成人一级黄色片| 精品夜夜嗨av一区二区三区| 亚洲成a人片在线不卡一二三区| 国产精品看片你懂得| 久久综合久久99| 欧美一区二区三区四区久久| 91精品1区2区| 99久久精品免费看| 国产成人亚洲综合a∨猫咪| 麻豆精品一区二区三区| 天天影视网天天综合色在线播放 | 色综合久久天天| 成人久久久精品乱码一区二区三区| 久久精品国产精品亚洲红杏| 三级一区在线视频先锋| 一区二区理论电影在线观看| 国产精品国产自产拍在线| 国产午夜一区二区三区| 亚洲人成在线播放网站岛国| 日韩精品一区二区三区蜜臀| 欧美日韩mp4| 欧美日韩免费高清一区色橹橹| 99久久国产综合色|国产精品| 国产91精品在线观看| 国产精品乡下勾搭老头1| 国产在线一区观看| 精品一区二区精品| 极品美女销魂一区二区三区免费|