一個Java的mac校驗域演算法,哪位大神能幫忙改寫成php版本
淡淡烟草味
淡淡烟草味 2017-06-26 10:49:17
0
1
809

一個Java的mac校驗域演算法,哪位大神能幫忙改寫成php版本。
封包格式:域0|域1|域2| …|域n
域n是MAC校驗域

public static byte[] getMac(byte[] dt, int mlen) {
        int n, k, len, ilen;
        // original input String length
        len = dt.length;
        // 原始串和mac长度的余数
        k = len % mlen;
        //
        n = mlen - k;
        ilen = len + n;
        byte[] bt = new byte[ilen];
        for (int i = 0; i < len; i++) {
            dt[i] = (byte) (dt[i] > 0x00 ? dt[i] : dt[i] + 256);
            bt[i] = dt[i];
        }
        bt[len] = 127;

        byte bo[] = new byte[mlen];
        for (int i = 0; i < ilen;) {
            for (int j = 0; j < mlen; j++) {
                bo[j] ^= bt[i];
                i++;
            }
        }

        for (int i = 0; i < mlen; i++) {
            // 如果遇到\r \n

            if ((bo[i] >= 0x00 ? bo[i] : bo[i] + 256) >= 0x80) { // "\r"
                bo[i] ^= 0x80;
            }

            if (bo[i] == 0x0d) { // "\r"
                bo[i] = 0x4d;
            }
            if (bo[i] == 0x0a) { // "\n"
                bo[i] = 0x4a;
            }
            if (bo[i] == 0x3a) { // ":"
                bo[i] = 0x7a;
            }
            if (bo[i] == 0x7c) { // "|"
                bo[i] = 0x3c;
            }
            if (bo[i] == 0x00) { // "0"
                bo[i] = 0x40;
            }

        }
        return bo;
    }
淡淡烟草味
淡淡烟草味

全部回覆(1)
洪涛

雷雷 雷雷 雷雷

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板