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

📄 md.java

📁 无线通信的主要编程软件,是无线通信工作人员的必备工具,关天相关教程我会在后续传上.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        D = rotintlft(D + H(A, B, C) + d[0 + 16 * blk] +                      0xeaa127fa, 11) + A;        C = rotintlft(C + H(D, A, B) + d[3 + 16 * blk] +                      0xd4ef3085, 16) + D;        B = rotintlft(B + H(C, D, A) + d[6 + 16 * blk] +                      0x04881d05, 23) + C;        A = rotintlft(A + H(B, C, D) + d[9 + 16 * blk] +                      0xd9d4d039, 4) + B;        D = rotintlft(D + H(A, B, C) + d[12 + 16 * blk] +                      0xe6db99e5, 11) + A;        C = rotintlft(C + H(D, A, B) + d[15 + 16 * blk] +                      0x1fa27cf8, 16) + D;        B = rotintlft(B + H(C, D, A) + d[2 + 16 * blk] +                      0xc4ac5665, 23) + C;    }    void round4(int blk) {        A = rotintlft(A + I(B, C, D) + d[0 + 16 * blk] +                      0xf4292244, 6) + B;        D = rotintlft(D + I(A, B, C) + d[7 + 16 * blk] +                      0x432aff97, 10) + A;        C = rotintlft(C + I(D, A, B) + d[14 + 16 * blk] +                      0xab9423a7, 15) + D;        B = rotintlft(B + I(C, D, A) + d[5 + 16 * blk] +                      0xfc93a039, 21) + C;        A = rotintlft(A + I(B, C, D) + d[12 + 16 * blk] +                      0x655b59c3, 6) + B;        D = rotintlft(D + I(A, B, C) + d[3 + 16 * blk] +                      0x8f0ccc92, 10) + A;        C = rotintlft(C + I(D, A, B) + d[10 + 16 * blk] +                      0xffeff47d, 15) + D;        B = rotintlft(B + I(C, D, A) + d[1 + 16 * blk] +                      0x85845dd1, 21) + C;        A = rotintlft(A + I(B, C, D) + d[8 + 16 * blk] +                      0x6fa87e4f, 6) + B;        D = rotintlft(D + I(A, B, C) + d[15 + 16 * blk] +                      0xfe2ce6e0, 10) + A;        C = rotintlft(C + I(D, A, B) + d[6 + 16 * blk] +                      0xa3014314, 15) + D;        B = rotintlft(B + I(C, D, A) + d[13 + 16 * blk] +                      0x4e0811a1, 21) + C;        A = rotintlft(A + I(B, C, D) + d[4 + 16 * blk] +                      0xf7537e82, 6) + B;        D = rotintlft(D + I(A, B, C) + d[11 + 16 * blk] +                      0xbd3af235, 10) + A;        C = rotintlft(C + I(D, A, B) + d[2 + 16 * blk] +                      0x2ad7d2bb, 15) + D;        B = rotintlft(B + I(C, D, A) + d[9 + 16 * blk] +                      0xeb86d391, 21) + C;    }}class md {    int A,B,C,D;    int d[];    int numwords;    /* For verification of a modicum of sanity, run a few     * test strings through     */    public static void main(String argv[]) {        boolean doinmd4;        String mdtype;        /* Test cases, mostly taken from rfc 1320 */        String str[] = { "" , "a", "abc", "message digest",                         "abcdefghijklmnopqrstuvwxyz",           "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",           "12345678901234567890123456789012345678901234567890123456789012" +           "345678901234567890",           "01234567890123456789012345678901234567890123456789012345"};        if (argv.length == 0) {            mdtype = "md4";            doinmd4 = true;        } else if (argv.length > 1) {            System.err.println("Usage: md [4|5|md4|md5]");            return;        } else  if ((argv[0].equals("4")) || (argv[0].equals("md4"))) {            mdtype = "md4";            doinmd4 = true;        } else if ((argv[0].equals("5")) || (argv[0].equals("md5"))) {            mdtype = "md5";            doinmd4 = false;        } else {            System.err.println("Usage: md [4|5|md4|md5]");            return;        }        for(int i = 0; i < str.length; i++) {            if (doinmd4) {                md4 mdc = new md4(str[i]);                mdc.calc();                System.out.println(mdtype + "(\"" + str[i] + "\") = " + mdc);            } else {                md5 mdc = new md5(str[i]);                mdc.calc();                System.out.println(mdtype + "(\"" + str[i] + "\") = " + mdc);            }        }    }    md (String s) {        byte in[] = new byte[s.length()];        int i;        for(i=0; i < s.length(); i++) {            in[i] = (byte) (s.charAt(i) & 0xff);        }        mdinit(in);    }    md (byte in[]) {        mdinit(in);    }    void mdinit (byte in[]) {        int newlen, endblklen, pad, i;        long datalenbits;        datalenbits = in.length  * 8;        endblklen = in.length % 64;        if (endblklen < 56) {            pad = 64 - endblklen;        } else {            pad = (64 - endblklen) + 64;        }        newlen = in.length + pad;        byte b[] = new byte[newlen];        for(i=0; i < in.length; i++) {            b[i] = in[i];        }        b[in.length] = (byte) 0x80;        for (i = b.length + 1; i < (newlen - 8); i++) {            b[i] = 0;        }        for (i = 0; i < 8; i++) {            b[newlen - 8 + i] = (byte) (datalenbits & 0xff);            datalenbits >>= 8;        }        /* init registers */        A = 0x67452301;        B = 0xefcdab89;        C = 0x98badcfe;        D = 0x10325476;        this.numwords = newlen/4;        this.d = new int[this.numwords];        for (i = 0; i < newlen; i += 4) {            this.d[i/4] = (b[i] & 0xff) + ((b[i+1] & 0xff) << 8) +                ((b[i+2] & 0xff) << 16) + ((b[i+3] & 0xff) << 24);        }   }    public String toString() {        String s;        return(tohex(A) + tohex(B) + tohex(C) + tohex(D));    }    int[] getregs() {        int regs[] = {this.A, this.B, this.C, this.D};        return regs;    }    void calc() {        int AA, BB, CC, DD, i;        for(i=0; i < numwords/16; i++) {            AA = A; BB = B; CC = C; DD = D;            round1(i);            round2(i);            round3(i);            if (this instanceof md5) {                round4(i);            }            A += AA; B+= BB; C+= CC; D+= DD;        }    }    /* Dummy round*() methods. these are overriden in the md4 and md5     * subclasses     */    void round1(int blk) {        System.err.println("Danger! Danger! Someone called md.round1()!");    }    void round2(int blk) {        System.err.println("Danger! Danger! Someone called md.round2()!");    }    void round3(int blk) {        System.err.println("Danger! Danger! Someone called md.round3()!");    }    void round4(int blk) {        System.err.println("Danger! Danger! Someone called md.round4()!");    }    static int rotintlft(int val, int numbits) {        return((val << numbits) | (val >>> (32 - numbits)));    }    static String tohex(int i) {        int b;        String tmpstr;        tmpstr = "";        for(b = 0; b < 4; b++) {            tmpstr += Integer.toString((i >> 4) & 0xf, 16)                + Integer.toString(i & 0xf, 16);            i >>= 8;        }        return tmpstr;    }    static md new_md5(String data) {        return new md5(data);    }}

⌨️ 快捷键说明

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