/** * Decodes an Object using the base64 algorithm. This method is provided in order to satisfy the * requirements of the Decoder interface, and will throw a DecoderException if the supplied * object is not of type byte[]. * * @param pObject * Object to decode * @return An object (of type byte[]) containing the binary data which corresponds to the byte[] * supplied. * @throws IllegalArgumentException * if the parameter supplied is not of type byte[] */ public Object decode(Object pObject) { if (!(pObject instanceof byte[])) { throw new IllegalArgumentException( "Parameter supplied to Base64 decode is not a byte[]"); } return decode((byte[])pObject); }
/** * Decodes a byte[] containing containing characters in the Base64 alphabet. * * @param pArray * A byte array containing Base64 character data * @return a byte array containing binary data */ public byte[] decode(byte[] pArray) { return decodeBase64(pArray); }
/** * Tests a given byte array to see if it contains only valid characters within the Base64 * alphabet. * * @param arrayOctect * byte array to test * @return <code>true</code> if all bytes are valid characters in the Base64 alphabet or if * the byte array is empty; false, otherwise */ public static boolean isArrayByteBase64(byte[] arrayOctect) { arrayOctect = discardWhitespace(arrayOctect); int length = arrayOctect.length; if (length == 0) { // shouldn't a 0 length array be valid base64 data? // return false; return true; } for (int i = 0; i < length; i++) { if (!isBase64(arrayOctect[i])) { return false; } } return true; }
/** * Encodes a byte[] containing binary data, into a byte[] containing characters in the Base64 * alphabet. * * @param pArray * a byte array containing binary data * @return A byte array containing only Base64 character data */ public byte[] encode(byte[] pArray) { return encodeBase64(pArray); } }
/** * Encodes an Object using the base64 algorithm. This method is provided in order to satisfy the * requirements of the Encoder interface, and will throw an EncoderException if the supplied * object is not of type byte[]. * * @param pObject * Object to encode * @return An object (of type byte[]) containing the base64 encoded data which corresponds to * the byte[] supplied. * @throws IllegalArgumentException * if the parameter supplied is not of type byte[] */ public Object encode(Object pObject) { if (!(pObject instanceof byte[])) { throw new IllegalArgumentException( "Parameter supplied to Base64 encode is not a byte[]"); } return encode((byte[])pObject); }
/** * Discards any characters outside of the base64 alphabet, per the requirements on page 25 of * RFC 2045 - "Any characters outside of the base64 alphabet are to be ignored in base64 encoded * data." * * @param data * The base-64 encoded data to groom * @return The data, less non-base64 characters (see RFC 2045). */ static byte[] discardNonBase64(byte[] data) { byte groomedData[] = new byte[data.length]; int bytesCopied = 0; for (int i = 0; i < data.length; i++) { if (isBase64(data[i])) { groomedData[bytesCopied++] = data[i]; } } byte packedData[] = new byte[bytesCopied]; System.arraycopy(groomedData, 0, packedData, 0, bytesCopied); return packedData; }
base64Data = discardNonBase64(base64Data);
/** * Encodes a byte[] containing binary data, into a byte[] containing characters in the Base64 * alphabet. * * @param pArray * a byte array containing binary data * @return A byte array containing only Base64 character data */ public byte[] encode(byte[] pArray) { return encodeBase64(pArray); } }
/** * Encodes an Object using the base64 algorithm. This method is provided in order to satisfy the * requirements of the Encoder interface, and will throw an EncoderException if the supplied * object is not of type byte[]. * * @param pObject * Object to encode * @return An object (of type byte[]) containing the base64 encoded data which corresponds to * the byte[] supplied. * @throws IllegalArgumentException * if the parameter supplied is not of type byte[] */ public Object encode(Object pObject) { if (!(pObject instanceof byte[])) { throw new IllegalArgumentException( "Parameter supplied to Base64 encode is not a byte[]"); } return encode((byte[])pObject); }
/** * Discards any characters outside of the base64 alphabet, per the requirements on page 25 of * RFC 2045 - "Any characters outside of the base64 alphabet are to be ignored in base64 encoded * data." * * @param data * The base-64 encoded data to groom * @return The data, less non-base64 characters (see RFC 2045). */ static byte[] discardNonBase64(byte[] data) { byte groomedData[] = new byte[data.length]; int bytesCopied = 0; for (int i = 0; i < data.length; i++) { if (isBase64(data[i])) { groomedData[bytesCopied++] = data[i]; } } byte packedData[] = new byte[bytesCopied]; System.arraycopy(groomedData, 0, packedData, 0, bytesCopied); return packedData; }
base64Data = discardNonBase64(base64Data);
/** * Tests a given byte array to see if it contains only valid characters within the Base64 * alphabet. * * @param arrayOctect * byte array to test * @return <code>true</code> if all bytes are valid characters in the Base64 alphabet or if the * byte array is empty; false, otherwise */ public static boolean isArrayByteBase64(byte[] arrayOctect) { arrayOctect = discardWhitespace(arrayOctect); int length = arrayOctect.length; if (length == 0) { // shouldn't a 0 length array be valid base64 data? // return false; return true; } for (int i = 0; i < length; i++) { if (!isBase64(arrayOctect[i])) { return false; } } return true; }
/** * Encrypt a string into a string using URL safe Base64 encoding. * * @param plainText * text to encrypt * @return encrypted string */ public final String encryptUrlSafe(final String plainText) { try { byte[] cipherText = encryptStringToByteArray(plainText); return new String(Base64UrlSafe.encodeBase64(cipherText)); } catch (GeneralSecurityException e) { log.error("Unable to encrypt text '" + plainText + "'", e); return null; } }
/** * Decodes a byte[] containing containing characters in the Base64 alphabet. * * @param pArray * A byte array containing Base64 character data * @return a byte array containing binary data */ public byte[] decode(byte[] pArray) { return decodeBase64(pArray); }
/** * Decodes an Object using the base64 algorithm. This method is provided in order to satisfy the * requirements of the Decoder interface, and will throw a DecoderException if the supplied * object is not of type byte[]. * * @param pObject * Object to decode * @return An object (of type byte[]) containing the binary data which corresponds to the byte[] * supplied. * @throws IllegalArgumentException * if the parameter supplied is not of type byte[] */ public Object decode(Object pObject) { if (!(pObject instanceof byte[])) { throw new IllegalArgumentException( "Parameter supplied to Base64 decode is not a byte[]"); } return decode((byte[])pObject); }
/** * Encrypt a string into a string using URL safe Base64 encoding. * * @param plainText * text to encrypt * @return encrypted string */ public final String encryptUrlSafe(final String plainText) { try { byte[] cipherText = encryptStringToByteArray(plainText); return new String(Base64UrlSafe.encodeBase64(cipherText)); } catch (GeneralSecurityException e) { log.error("Unable to encrypt text '" + plainText + "'", e); return null; } }
/** * Decrypts a string into a string. * * @param text * text to decrypt * @return the decrypted text */ public final String decryptUrlSafe(final String text) { try { byte[] encrypted = Base64UrlSafe.decodeBase64(text.getBytes()); return new String(decryptByteArray(encrypted), CHARACTER_ENCODING); } catch (UnsupportedEncodingException ex) { throw new WicketRuntimeException(ex.getMessage()); } }
/** * Decrypts a string into a string. * * @param text * text to decrypt * @return the decrypted text */ public final String decryptUrlSafe(final String text) { try { byte[] encrypted = Base64UrlSafe.decodeBase64(text.getBytes()); return new String(decryptByteArray(encrypted), CHARACTER_ENCODING); } catch (UnsupportedEncodingException ex) { throw new WicketRuntimeException("Error decoding text: " + text, ex); } }