Java tutorial
/* * Copyright (C) 2013 The Java Tool project * Gelin Luo <greenlaw110(at)gmail.com> * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.osgl.util; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; import org.osgl.exception.UnexpectedException; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; import java.nio.charset.Charset; import java.security.MessageDigest; import java.util.UUID; /** * Utility class for encoding and decoding * * <p>Part of the code comes from play!framework under apache license</p> */ public class Codec { /** * @return an UUID String */ public static String UUID() { return UUID.randomUUID().toString(); } /** * Encode a String to base64 * @param value The plain String * @return The base64 encoded String */ public static String encodeBASE64(String value) { try { return new String(Base64.encode(value.getBytes("utf-8"))); } catch (UnsupportedEncodingException ex) { throw new UnexpectedException(ex); } } /** * Encode binary data to base64 * @param value The binary data * @return The base64 encoded String */ public static String encodeBASE64(byte[] value) { return new String(Base64.encode(value)); } /** * Decode a base64 value * @param value The base64 encoded String * @return decoded binary data */ public static byte[] decodeBASE64(String value) { return Base64.decode(value); } /** * Build an hexadecimal MD5 hash for a String * @param value The String to hash * @return An hexadecimal Hash */ public static String hexMD5(String value) { try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(value.getBytes("utf-8")); byte[] digest = messageDigest.digest(); return byteToHexString(digest); } catch (Exception ex) { throw new UnexpectedException(ex); } } /** * Build an hexadecimal SHA1 hash for a String * @param value The String to hash * @return An hexadecimal Hash */ public static String hexSHA1(String value) { try { MessageDigest md; md = MessageDigest.getInstance("SHA-1"); md.update(value.getBytes("utf-8")); byte[] digest = md.digest(); return byteToHexString(digest); } catch (Exception ex) { throw new UnexpectedException(ex); } } /** * Write a byte array as hexadecimal String. */ public static String byteToHexString(byte[] bytes) { return String.valueOf(Hex.encodeHex(bytes)); } /** * Transform an hexadecimal String to a byte array. */ public static byte[] hexStringToByte(String hexString) { try { return Hex.decodeHex(hexString.toCharArray()); } catch (DecoderException e) { throw new UnexpectedException(e); } } public static String encodeUrl(String s, Charset enc) { try { return URLEncoder.encode(s, enc.name()); } catch (UnsupportedEncodingException e) { throw E.encodingException(e); } } public static String decodeUrl(String s, Charset enc) { try { return URLDecoder.decode(s, enc.name()); } catch (UnsupportedEncodingException e) { throw E.encodingException(e); } } }