Java 类com.alibaba.fastjson.util.Base64 实例源码

项目:boohee_v5.6    文件:JSONReaderScanner.java   
public byte[] bytesValue() {
    return Base64.decodeFast(this.buf, this.np + 1, this.sp);
}
项目:boohee_v5.6    文件:JSONScanner.java   
public byte[] bytesValue() {
    return Base64.decodeFast(this.text, this.np + 1, this.sp);
}
项目:boohee_v5.6    文件:SerializeWriter.java   
public void writeByteArray(byte[] bytes) {
    int bytesLen = bytes.length;
    boolean singleQuote = isEnabled(SerializerFeature.UseSingleQuotes);
    char quote = singleQuote ? '\'' : '\"';
    if (bytesLen == 0) {
        write(singleQuote ? "''" : "\"\"");
        return;
    }
    int s;
    int i;
    int left;
    char[] CA = Base64.CA;
    int eLen = (bytesLen / 3) * 3;
    int charsLen = (((bytesLen - 1) / 3) + 1) << 2;
    int offset = this.count;
    int newcount = (this.count + charsLen) + 2;
    if (newcount > this.buf.length) {
        if (this.writer != null) {
            write(quote);
            s = 0;
            while (s < eLen) {
                int s2 = s + 1;
                s = s2 + 1;
                s2 = s + 1;
                i = (((bytes[s] & 255) << 16) | ((bytes[s2] & 255) << 8)) | (bytes[s] & 255);
                write(CA[(i >>> 18) & 63]);
                write(CA[(i >>> 12) & 63]);
                write(CA[(i >>> 6) & 63]);
                write(CA[i & 63]);
                s = s2;
            }
            left = bytesLen - eLen;
            if (left > 0) {
                i = ((bytes[eLen] & 255) << 10) | (left == 2 ? (bytes[bytesLen - 1] & 255) << 2 : 0);
                write(CA[i >> 12]);
                write(CA[(i >>> 6) & 63]);
                write(left == 2 ? CA[i & 63] : '=');
                write('=');
            }
            write(quote);
            return;
        }
        expandCapacity(newcount);
    }
    this.count = newcount;
    int offset2 = offset + 1;
    this.buf[offset] = quote;
    int d = offset2;
    s = 0;
    while (s < eLen) {
        s2 = s + 1;
        s = s2 + 1;
        s2 = s + 1;
        i = (((bytes[s] & 255) << 16) | ((bytes[s2] & 255) << 8)) | (bytes[s] & 255);
        int i2 = d + 1;
        this.buf[d] = CA[(i >>> 18) & 63];
        d = i2 + 1;
        this.buf[i2] = CA[(i >>> 12) & 63];
        i2 = d + 1;
        this.buf[d] = CA[(i >>> 6) & 63];
        d = i2 + 1;
        this.buf[i2] = CA[i & 63];
        s = s2;
    }
    left = bytesLen - eLen;
    if (left > 0) {
        i = ((bytes[eLen] & 255) << 10) | (left == 2 ? (bytes[bytesLen - 1] & 255) << 2 : 0);
        this.buf[newcount - 5] = CA[i >> 12];
        this.buf[newcount - 4] = CA[(i >>> 6) & 63];
        this.buf[newcount - 3] = left == 2 ? CA[i & 63] : '=';
        this.buf[newcount - 2] = '=';
    }
    this.buf[newcount - 1] = quote;
}
项目:uavstack    文件:JSONReaderScanner.java   
public byte[] bytesValue() {
    return Base64.decodeFast(buf, np + 1, sp);
}
项目:uavstack    文件:JSONScanner.java   
public byte[] bytesValue() {
    return Base64.decodeFast(text, np + 1, sp);
}
项目:gameserver    文件:Apple.java   
/**
     * Check if the receipt sent by client is for us and valid.
     * 
     * @param json
     * @return
     */
    public static boolean checkIAPReceipt(User user, String productId, String json) {
        try {
            String roleName = Constant.EMPTY;
            if ( user != null ) {
                roleName = user.getRoleName();
            }
            String decodeJson = new String(Base64.decodeFast(json));

            decodeJson = decodeJson.replaceAll("=", ":");
            decodeJson = decodeJson.replaceAll(";", ",");
            Object obj = com.alibaba.fastjson.JSON.parse(decodeJson);
//          String receipt = ((Map)obj).get("receipt-data").toString();
//          /**
//           * receipt:
//           * {
//                  "signature" = "ApdxJdtNwPU2rA5/cn3kIO1OTk25feDKa0aagyyRveWlcFlglv6RF6znkiBS3um9Uc7pVob+PqZR2T8wyVrHNplof3DX3IqDOlWq+90a7Yl+qrR7A7jWwviw708PS+67PyHRnhO/G7bVqgRpEr6EuFybiU1FXAiXJc6ls1YAssQxAAADVzCCA1MwggI7oAMCAQICCGUUkU3ZWAS1MA0GCSqGSIb3DQEBBQUAMH8xCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEzMDEGA1UEAwwqQXBwbGUgaVR1bmVzIFN0b3JlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA5MDYxNTIyMDU1NloXDTE0MDYxNDIyMDU1NlowZDEjMCEGA1UEAwwaUHVyY2hhc2VSZWNlaXB0Q2VydGlmaWNhdGUxGzAZBgNVBAsMEkFwcGxlIGlUdW5lcyBTdG9yZTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMrRjF2ct4IrSdiTChaI0g8pwv/cmHs8p/RwV/rt/91XKVhNl4XIBimKjQQNfgHsDs6yju++DrKJE7uKsphMddKYfFE5rGXsAdBEjBwRIxexTevx3HLEFGAt1moKx509dhxtiIdDgJv2YaVs49B0uJvNdy6SMqNNLHsDLzDS9oZHAgMBAAGjcjBwMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUNh3o4p2C0gEYtTJrDtdDC5FYQzowDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBSpg4PyGUjFPhJXCBTMzaN+mV8k9TAQBgoqhkiG92NkBgUBBAIFADANBgkqhkiG9w0BAQUFAAOCAQEAEaSbPjtmN4C/IB3QEpK32RxacCDXdVXAeVReS5FaZxc+t88pQP93BiAxvdW/3eTSMGY5FbeAYL3etqP5gm8wrFojX0ikyVRStQ+/AQ0KEjtqB07kLs9QUe8czR8UGfdM1EumV/UgvDd4NwNYxLQMg4WTQfgkQQVy8GXZwVHgbE/UC6Y7053pGXBk51NPM3woxhd3gSRLvXj+loHsStcTEqe9pBDpmG5+sk4tw+GK3GMeEN5/+e1QT9np/Kl1nj+aBw7C0xsy0bFnaAd1cSS6xdory/CUvM6gtKsmnOOdqTesbp0bs8sn6Wqs0C9dgcxRHuOMZ2tm8npLUm7argOSzQ==";
//                  "purchase-info" = "ewoJIm9yaWdpbmFsLXB1cmNoYXNlLWRhdGUtcHN0IiA9ICIyMDEyLTA3LTEyIDA1OjU0OjM1IEFtZXJpY2EvTG9zX0FuZ2VsZXMiOwoJInB1cmNoYXNlLWRhdGUtbXMiID0gIjEzNDIwOTc2NzU4ODIiOwoJIm9yaWdpbmFsLXRyYW5zYWN0aW9uLWlkIiA9ICIxNzAwMDAwMjk0NDk0MjAiOwoJImJ2cnMiID0gIjEuNCI7CgkiYXBwLWl0ZW0taWQiID0gIjQ1MDU0MjIzMyI7CgkidHJhbnNhY3Rpb24taWQiID0gIjE3MDAwMDAyOTQ0OTQyMCI7CgkicXVhbnRpdHkiID0gIjEiOwoJIm9yaWdpbmFsLXB1cmNoYXNlLWRhdGUtbXMiID0gIjEzNDIwOTc2NzU4ODIiOwoJIml0ZW0taWQiID0gIjUzNDE4NTA0MiI7CgkidmVyc2lvbi1leHRlcm5hbC1pZGVudGlmaWVyIiA9ICI5MDUxMjM2IjsKCSJwcm9kdWN0LWlkIiA9ICJjb20uemVwdG9sYWIuY3RyYm9udXMuc3VwZXJwb3dlcjEiOwoJInB1cmNoYXNlLWRhdGUiID0gIjIwMTItMDctMTIgMTI6NTQ6MzUgRXRjL0dNVCI7Cgkib3JpZ2luYWwtcHVyY2hhc2UtZGF0ZSIgPSAiMjAxMi0wNy0xMiAxMjo1NDozNSBFdGMvR01UIjsKCSJiaWQiID0gImNvbS56ZXB0b2xhYi5jdHJleHBlcmltZW50cyI7CgkicHVyY2hhc2UtZGF0ZS1wc3QiID0gIjIwMTItMDctMTIgMDU6NTQ6MzUgQW1lcmljYS9Mb3NfQW5nZWxlcyI7Cn0=";
//                  "pod" = "17";
//                  "signing-status" = "0";
//              }
//           */
//          String decodeReceipt = new String(Base64.decodeFast(receipt));
//          decodeReceipt = decodeReceipt.replaceAll("=", ":");
//          decodeReceipt = decodeReceipt.replaceAll(";", ",");
//          obj = com.alibaba.fastjson.JSON.parse(decodeReceipt);
            String purchaseInfo = ((Map)obj).get("purchase-info").toString();

            String decodePurchaseInfo = new String(Base64.decodeFast(purchaseInfo));
            /*
                {
                    "original-purchase-date-pst" = "2012-07-12 05:54:35 America/Los_Angeles";
                    "purchase-date-ms" = "1342097675882";
                    "original-transaction-id" = "170000029449420";
                    "bvrs" = "1.4";
                    "app-item-id" = "450542233";
                    "transaction-id" = "170000029449420";
                    "quantity" = "1";
                    "original-purchase-date-ms" = "1342097675882";
                    "item-id" = "534185042";
                    "version-external-identifier" = "9051236";
                    "product-id" = "com.zeptolab.ctrbonus.superpower1";
                    "purchase-date" = "2012-07-12 12:54:35 Etc/GMT";
                    "original-purchase-date" = "2012-07-12 12:54:35 Etc/GMT";
                    "bid" = "com.zeptolab.ctrexperiments";
                    "purchase-date-pst" = "2012-07-12 05:54:35 America/Los_Angeles";
                }
             */
            decodePurchaseInfo = decodePurchaseInfo.replaceAll("=", ":");
            decodePurchaseInfo = decodePurchaseInfo.replaceAll(";", ",");
            logger.info("User {} decode purchase-info: {}", roleName, decodePurchaseInfo);
            obj = com.alibaba.fastjson.JSON.parse(decodePurchaseInfo);
            String pid = ((Map)obj).get("product-id").toString();
            String purchaseDate = ((Map)obj).get("purchase-date-pst").toString();
            Date date = DateUtil.parseApplePurchaseDate(purchaseDate);
            if ( productId.equals(pid) ) {
                long currentMillis = System.currentTimeMillis();
                int timeDiff = (int)(currentMillis - date.getTime());
                if ( timeDiff > 0 && timeDiff < 86400000 ) {
                    return true;
                } else {
                    logger.info("The {} use a fake purchaseDate:{}", roleName, purchaseDate);
                }
            } else {
                logger.info("The {} use a fake productId:{}", roleName, pid);
            }
        } catch (Exception e) {
            logger.warn("Failed to check IAP receipt json:{}, exception:{}", json, e.getMessage());
            logger.info("Parse IAP receipt exception: ", e);
        }
        return false;
    }
项目:itmarry    文件:JSONReaderScanner.java   
public byte[] bytesValue() {
    return Base64.decodeFast(buf, np + 1, sp);
}
项目:itmarry    文件:JSONScanner.java   
public byte[] bytesValue() {
    return Base64.decodeFast(text, np + 1, sp);
}
项目:android_http_demo    文件:JSONScanner.java   
public byte[] bytesValue() {
    return Base64.decodeFast(buf, np + 1, sp);
}
项目:AndroidNio    文件:JSONScanner.java   
public byte[] bytesValue() {
    return Base64.decodeFast(buf, np + 1, sp);
}