From 7e89e428b5587b3e9b0626cafecbcd975c8637ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=94=80?= Date: Fri, 9 Sep 2016 16:45:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E5=86=85=E7=BD=AE=E7=9A=84Ba?= =?UTF-8?q?se64?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/mainframe/bbs/UserInfoLabel.java | 4 +- .../com/fr/design/extra/ucenter/Base64.java | 256 ------------------ .../fr/design/extra/ucenter/PHPFunctions.java | 3 +- 3 files changed, 5 insertions(+), 258 deletions(-) delete mode 100644 designer_base/src/com/fr/design/extra/ucenter/Base64.java diff --git a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java index 54a2016eb..1c3f83aa0 100644 --- a/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java +++ b/designer/src/com/fr/design/mainframe/bbs/UserInfoLabel.java @@ -47,6 +47,8 @@ public class UserInfoLabel extends UILabel{ private static final int MIN_MESSAGE_COUNT = 1; private static final int MENU_HEIGHT = 20; + private static final int DEFAULT_BBS_UID = 0; + //用户名 private String userName; //消息条数 @@ -117,7 +119,7 @@ public class UserInfoLabel extends UILabel{ DesignerEnvManager.getEnvManager().setBBSName(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setBBSPassword(StringUtils.EMPTY); DesignerEnvManager.getEnvManager().setInShowBBsName(StringUtils.EMPTY); - DesignerEnvManager.getEnvManager().setBbsUid(Integer.parseInt(StringUtils.EMPTY)); + DesignerEnvManager.getEnvManager().setBbsUid(DEFAULT_BBS_UID); } private void updateInfoPane(){ diff --git a/designer_base/src/com/fr/design/extra/ucenter/Base64.java b/designer_base/src/com/fr/design/extra/ucenter/Base64.java deleted file mode 100644 index 199cc0bc8..000000000 --- a/designer_base/src/com/fr/design/extra/ucenter/Base64.java +++ /dev/null @@ -1,256 +0,0 @@ -package com.fr.design.extra.ucenter; - -import java.io.*; - -/** - * Created by lp on 2016/9/9. - */ -public class Base64 { - /** - * returns an array of base64-encoded characters to represent the - * passed data array. - * - * @param data the array of bytes to encode - * @return base64-coded character array. - */ - public static char[] encode(byte[] data) { - char[] out = new char[((data.length + 2) / 3) * 4]; - - // - // 3 bytes encode to 4 chars. Output is always an even - // multiple of 4 characters. - // - for (int i = 0, index = 0; i < data.length; i += 3, index += 4) { - boolean quad = false; - boolean trip = false; - - int val = (0xFF & data[i]); - val <<= 8; - if ((i + 1) < data.length) { - val |= (0xFF & data[i + 1]); - trip = true; - } - val <<= 8; - if ((i + 2) < data.length) { - val |= (0xFF & data[i + 2]); - quad = true; - } - out[index + 3] = alphabet[(quad ? (val & 0x3F) : 64)]; - val >>= 6; - out[index + 2] = alphabet[(trip ? (val & 0x3F) : 64)]; - val >>= 6; - out[index + 1] = alphabet[val & 0x3F]; - val >>= 6; - out[index + 0] = alphabet[val & 0x3F]; - } - return out; - } - - /** - * Decodes a BASE-64 encoded stream to recover the original - * data. White space before and after will be trimmed away, - * but no other manipulation of the input will be performed. - * - * As of version 1.2 this method will properly handle input - * containing junk characters (newlines and the like) rather - * than throwing an error. It does this by pre-parsing the - * input and generating from that a count of VALID input - * characters. - **/ - public static byte[] decode(char[] data) { - // as our input could contain non-BASE64 data (newlines, - // whitespace of any sort, whatever) we must first adjust - // our count of USABLE data so that... - // (a) we don't misallocate the output array, and - // (b) think that we miscalculated our data length - // just because of extraneous throw-away junk - - int tempLen = data.length; - for (int ix = 0; ix < data.length; ix++) { - if ((data[ix] > 255) || codes[data[ix]] < 0) - --tempLen; // ignore non-valid chars and padding - } - // calculate required length: - // -- 3 bytes for every 4 valid base64 chars - // -- plus 2 bytes if there are 3 extra base64 chars, - // or plus 1 byte if there are 2 extra. - - int len = (tempLen / 4) * 3; - if ((tempLen % 4) == 3) - len += 2; - if ((tempLen % 4) == 2) - len += 1; - - byte[] out = new byte[len]; - - - int shift = 0; // # of excess bits stored in accum - int accum = 0; // excess bits - int index = 0; - - // we now go through the entire array (NOT using the 'tempLen' value) - for (int ix = 0; ix < data.length; ix++) { - int value = (data[ix] > 255) ? -1 : codes[data[ix]]; - - if (value >= 0)// skip over non-code - { - accum <<= 6; // bits shift up by 6 each time thru - shift += 6; // loop, with new bits being put in - accum |= value; // at the bottom. - if (shift >= 8)// whenever there are 8 or more shifted in, - { - shift -= 8; // write them out (from the top, leaving any - out[index++] = // excess at the bottom for next iteration. - (byte) ((accum >> shift) & 0xff); - } - } - // we will also have skipped processing a padding null byte ('=') here; - // these are used ONLY for padding to an even length and do not legally - // occur as encoded data. for this reason we can ignore the fact that - // no index++ operation occurs in that special case: the out[] array is - // initialized to all-zero bytes to start with and that works to our - // advantage in this combination. - } - - // if there is STILL something wrong we just have to throw up now! - if (index != out.length) { - throw new Error("Miscalculated data length (wrote " + - index + " instead of " + out.length + ")"); - } - - return out; - } - - - // - // code characters for values 0..63 - // - private static char[] alphabet = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".toCharArray(); - - // - // lookup table for converting base64 characters to value in range 0..63 - // - private static byte[] codes = new byte[256]; - - static { - for (int i = 0; i < 256; i++) - codes[i] = -1; - for (int i = 'A'; i <= 'Z'; i++) - codes[i] = (byte) (i - 'A'); - for (int i = 'a'; i <= 'z'; i++) - codes[i] = (byte) (26 + i - 'a'); - for (int i = '0'; i <= '9'; i++) - codes[i] = (byte) (52 + i - '0'); - codes['+'] = 62; - codes['/'] = 63; - } - - - - - /////////////////////////////////////////////////// - // remainder (main method and helper functions) is - // for testing purposes only, feel free to clip it. - /////////////////////////////////////////////////// - - public static void main(String[] args) { - boolean decode = false; - - if (args.length == 0) { - System.out.println("usage: java Base64 [-d[ecode]] filename"); - System.exit(0); - } - for (int i = 0; i < args.length; i++) { - if ("-decode".equalsIgnoreCase(args[i])) - decode = true; - else if ("-d".equalsIgnoreCase(args[i])) - decode = true; - } - - String filename = args[args.length - 1]; - File file = new File(filename); - if (!file.exists()) { - System.out.println("Error: file '" + filename + "' doesn't exist!"); - System.exit(0); - } - - if (decode) { - char[] encoded = readChars(file); - byte[] decoded = decode(encoded); - writeBytes(file, decoded); - } - else { - byte[] decoded = readBytes(file); - char[] encoded = encode(decoded); - writeChars(file, encoded); - } - } - - private static byte[] readBytes(File file) { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - try { - InputStream fis = new FileInputStream(file); - InputStream is = new BufferedInputStream(fis); - int count = 0; - byte[] buf = new byte[16384]; - while ((count = is.read(buf)) != -1) { - if (count > 0) - baos.write(buf, 0, count); - } - is.close(); - } - catch (Exception e) { - e.printStackTrace(); - } - - return baos.toByteArray(); - } - - private static char[] readChars(File file) { - CharArrayWriter caw = new CharArrayWriter(); - try { - Reader fr = new FileReader(file); - Reader in = new BufferedReader(fr); - int count = 0; - char[] buf = new char[16384]; - while ((count = in.read(buf)) != -1) { - if (count > 0) - caw.write(buf, 0, count); - } - in.close(); - } - catch (Exception e) { - e.printStackTrace(); - } - - return caw.toCharArray(); - } - - private static void writeBytes(File file, byte[] data) { - try { - OutputStream fos = new FileOutputStream(file); - OutputStream os = new BufferedOutputStream(fos); - os.write(data); - os.close(); - } - catch (Exception e) { - e.printStackTrace(); - } - } - - private static void writeChars(File file, char[] data) { - try { - Writer fos = new FileWriter(file); - Writer os = new BufferedWriter(fos); - os.write(data); - os.close(); - } - catch (Exception e) { - e.printStackTrace(); - } - } - /////////////////////////////////////////////////// - // end of test code. - /////////////////////////////////////////////////// -} diff --git a/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java b/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java index 511fbd9b9..5e9ff8393 100644 --- a/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java +++ b/designer_base/src/com/fr/design/extra/ucenter/PHPFunctions.java @@ -5,6 +5,7 @@ import java.net.URLEncoder; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Map; +import com.fr.base.Base64; /** * Created by lp on 2016/9/9. @@ -31,7 +32,7 @@ public abstract class PHPFunctions { protected String base64_decode(String input){ try { - return new String(Base64.decode(input.toCharArray()),"iso-8859-1"); + return new String(Base64.decode(input)); } catch (Exception e) { return e.getMessage(); }