/* * 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.apache.tuscany.sca.databinding.xstream; import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; /** * Utility methods. * * @version $Rev$ $Date$ */ public class Utils { public static String toBase64(byte[] array) { String code = null; code = new sun.misc.BASE64Encoder().encode(array); return code; } public static byte[] fromBase64(String bytecode) { byte[] dec = null; try { dec = new sun.misc.BASE64Decoder().decodeBuffer(bytecode); } catch (IOException e) { e.printStackTrace(); } return dec; } public static String uniqueID() { try { //Initialize SecureRandom //This is a lengthy operation, to be done only upon //initialization of the application SecureRandom prng = SecureRandom.getInstance("SHA1PRNG"); //generate a random number String randomNum = Integer.toString(prng.nextInt()); //get its digest MessageDigest sha = MessageDigest.getInstance("SHA-1"); byte[] result = sha.digest(randomNum.getBytes()); return hexEncode(result); } catch (NoSuchAlgorithmException ex) { ex.printStackTrace(); } return null; } private static String hexEncode(byte[] aInput) { StringBuffer result = new StringBuffer(); char[] digits = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; for (int idx = 0; idx < aInput.length; ++idx) { byte b = aInput[idx]; result.append(digits[(b & 0xf0) >> 4]); result.append(digits[b & 0x0f]); } return result.toString(); } }