⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sha1.java

📁 无线通信的主要编程软件,是无线通信工作人员的必备工具,关天相关教程我会在后续传上.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        {            while (pos < DATA_LENGTH)                tmp[pos++] = 0;            byte2int(tmp, 0, data, 0, DATA_LENGTH/4);            transform(data);            pos = 0;        }        while (pos < DATA_LENGTH - 8)            tmp[pos++] = 0;        byte2int(tmp, 0, data, 0, (DATA_LENGTH/4)-2);        // Big endian        // WARNING: int>>>32 != 0 !!!        // bitcount() used to return a long, now it's an int.        long bc = count * 8;        data[14] = (int) (bc>>>32);        data[15] = (int) bc;        transform(data);        byte buf[] = new byte[HASH_LENGTH];        // Big endian        int off = 0;        for (int i = 0; i < HASH_LENGTH/4; ++i) {            int d = digest[i];            buf[off++] = (byte) (d>>>24);            buf[off++] = (byte) (d>>>16);            buf[off++] = (byte) (d>>>8);            buf[off++] = (byte)  d;        }        return buf;    }// SHA-1 transform routines//...........................................................................    private static int f1(int a, int b, int c) {        return (c^(a&(b^c))) + 0x5A827999;    }    private static int f2(int a, int b, int c) {        return (a^b^c) + 0x6ED9EBA1;    }    private static int f3(int a, int b, int c) {        return ((a&b)|(c&(a|b))) + 0x8F1BBCDC;    }    private static int f4(int a, int b, int c) {        return (a^b^c) + 0xCA62C1D6;    }    private void transform (int[] X)    {        int A = digest[0];        int B = digest[1];        int C = digest[2];        int D = digest[3];        int E = digest[4];        int W[] = w;        for (int i=0; i<16; i++)        {            W[i] = X[i];        }        for (int i=16; i<80; i++)        {            int j = W[i-16] ^ W[i-14] ^ W[i-8] ^ W[i-3];            W[i] = j;            W[i] = (j << 1) | (j >>> -1);        }        E += ((A<<5)|(A >>> -5)) + f1(B,C,D) + W[0];  B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f1(A,B,C) + W[1];  A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f1(E,A,B) + W[2];  E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f1(D,E,A) + W[3];  D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f1(C,D,E) + W[4];  C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f1(B,C,D) + W[5];  B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f1(A,B,C) + W[6];  A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f1(E,A,B) + W[7];  E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f1(D,E,A) + W[8];  D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f1(C,D,E) + W[9];  C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f1(B,C,D) + W[10]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f1(A,B,C) + W[11]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f1(E,A,B) + W[12]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f1(D,E,A) + W[13]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f1(C,D,E) + W[14]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f1(B,C,D) + W[15]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f1(A,B,C) + W[16]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f1(E,A,B) + W[17]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f1(D,E,A) + W[18]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f1(C,D,E) + W[19]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f2(B,C,D) + W[20]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f2(A,B,C) + W[21]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f2(E,A,B) + W[22]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f2(D,E,A) + W[23]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f2(C,D,E) + W[24]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f2(B,C,D) + W[25]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f2(A,B,C) + W[26]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f2(E,A,B) + W[27]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f2(D,E,A) + W[28]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f2(C,D,E) + W[29]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f2(B,C,D) + W[30]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f2(A,B,C) + W[31]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f2(E,A,B) + W[32]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f2(D,E,A) + W[33]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f2(C,D,E) + W[34]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f2(B,C,D) + W[35]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f2(A,B,C) + W[36]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f2(E,A,B) + W[37]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f2(D,E,A) + W[38]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f2(C,D,E) + W[39]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f3(B,C,D) + W[40]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f3(A,B,C) + W[41]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f3(E,A,B) + W[42]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f3(D,E,A) + W[43]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f3(C,D,E) + W[44]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f3(B,C,D) + W[45]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f3(A,B,C) + W[46]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f3(E,A,B) + W[47]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f3(D,E,A) + W[48]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f3(C,D,E) + W[49]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f3(B,C,D) + W[50]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f3(A,B,C) + W[51]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f3(E,A,B) + W[52]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f3(D,E,A) + W[53]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f3(C,D,E) + W[54]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f3(B,C,D) + W[55]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f3(A,B,C) + W[56]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f3(E,A,B) + W[57]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f3(D,E,A) + W[58]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f3(C,D,E) + W[59]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f4(B,C,D) + W[60]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f4(A,B,C) + W[61]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f4(E,A,B) + W[62]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f4(D,E,A) + W[63]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f4(C,D,E) + W[64]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f4(B,C,D) + W[65]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f4(A,B,C) + W[66]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f4(E,A,B) + W[67]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f4(D,E,A) + W[68]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f4(C,D,E) + W[69]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f4(B,C,D) + W[70]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f4(A,B,C) + W[71]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f4(E,A,B) + W[72]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f4(D,E,A) + W[73]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f4(C,D,E) + W[74]; C =((C<<30)|(C>>>-30));        E += ((A<<5)|(A >>> -5)) + f4(B,C,D) + W[75]; B =((B<<30)|(B>>>-30));        D += ((E<<5)|(E >>> -5)) + f4(A,B,C) + W[76]; A =((A<<30)|(A>>>-30));        C += ((D<<5)|(D >>> -5)) + f4(E,A,B) + W[77]; E =((E<<30)|(E>>>-30));        B += ((C<<5)|(C >>> -5)) + f4(D,E,A) + W[78]; D =((D<<30)|(D>>>-30));        A += ((B<<5)|(B >>> -5)) + f4(C,D,E) + W[79]; C =((C<<30)|(C>>>-30));        digest[0] += A;        digest[1] += B;        digest[2] += C;        digest[3] += D;        digest[4] += E;    }    // why was this public?    // Note: parameter order changed to be consistent with System.arraycopy.    private static void byte2int(byte[] src, int srcOffset,                                 int[] dst, int dstOffset, int length)    {        while (length-- > 0)        {            // Big endian            dst[dstOffset++] = (src[srcOffset++]         << 24) |                               ((src[srcOffset++] & 0xFF) << 16) |                               ((src[srcOffset++] & 0xFF) <<  8) |                                (src[srcOffset++] & 0xFF);        }    }    public static PyString __doc__update = new PyString(        "Update this hashing object's state with the provided string."    );    /**     * Add an array of bytes to the digest.     */    public synchronized void update(byte input[]) {        engineUpdate(input, 0, input.length);    }    public static PyString __doc__copy = new PyString(        "Return a copy of the hashing object."    );    /**     * Add an array of bytes to the digest.     */    public SHA1 copy() {        return new SHA1(this);    }    public static PyString __doc__hexdigest = new PyString(        "Return the digest value as a string of hexadecimal digits."    );    /**     * Print out the digest in a form that can be easily compared     * to the test vectors.     */    public String hexdigest() {        if (digestBits == null)            digestBits = engineDigest();        StringBuffer sb = new StringBuffer();        for (int i = 0; i < 20; i++) {            char c1, c2;            c1 = (char) ((digestBits[i] >>> 4) & 0xf);            c2 = (char) (digestBits[i] & 0xf);            c1 = (char) ((c1 > 9) ? 'a' + (c1 - 10) : '0' + c1);            c2 = (char) ((c2 > 9) ? 'a' + (c2 - 10) : '0' + c2);            sb.append(c1);            sb.append(c2);        }        return sb.toString();    }    public static PyString __doc__digest = new PyString(        "Return the digest value as a string of binary data."    );    public String digest() {        if (digestBits == null)            digestBits = engineDigest();        return new String(digestBits, 0, 0, digestBits.length);    }    // XXX should become PyObject and use Py.idstr?    public String toString() {        return "<SHA object at" + System.identityHashCode(this) + ">";    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -