`
BBjava
  • 浏览: 125496 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

小工具,ScriUtil.java

阅读更多


package org.iteye.bbjava.threedesmac;

import java.util.Random;

public class ScriUtil {
	
	/**
	 * 将十六进制 byte数组转换成字符串
	 * @param datas 十六进制的数据
	 * @return String 十六进制的字符串
	 *  
	 * */
	public  static String hex2String(byte[] datas){
	
		
		return null;
	}
	
	/**
	 * 把byte数组转换成十六进制字符串
	 * @param datas 需求转换的byte数组
	 * @return String 十六进制字符
	 * */
	public static String byte2String(byte[] datas){
		
		return null;
	}
	
	/**
	 * 2进制数取反操作
	 * @param elems 被取反数
	 * @return byte[] 取反后的数
	 * */
	public static byte[] changeToReverse(byte[] elems){
		
		byte[] temp = new byte[6];
		if(elems != null){
			for(int i = 0;i < elems.length ; i ++ ){
				temp[i] = (byte) ~elems[i];
			}
		}else{
			throw new NullPointerException("参数为空引用");
		}
		return temp;
	}
	
	/**
	 * 产生一个byte数组,用户指定的byte数组,并随机填充数值。
	 * @param elems 
	 * @return byte[] 
	 * */
	public static byte[] createRandomBytes(byte[] elems){
		if(elems != null){
			Random random = new Random();
			random.nextBytes(elems);
		}else{
			throw new NullPointerException("参数为空引用");
		}
		return elems;
	}
	
	
	/**
	 * 把指定的两个byte数组串联在一起
	 * @param elems 第一个byte数组
	 * @param datas 第二个byte数组
	 * @return byte[] 串联好的byte数组
	 * 
	 * */
	public static byte[] concatBytes(byte[] elems,byte[] datas){
		byte[] temp = null;
		if(elems != null && datas!=null){
			int n = elems.length + datas.length ; 
			temp = new byte[n];
			System.arraycopy(elems, 0, temp, 0, elems.length);
			System.arraycopy(datas,0, temp, elems.length, datas.length);
		}else{
			throw new NullPointerException("参数其中一个或二个为空引用");
		}
		return temp;
	}
	
	/**
	 * 把一个不足8字节部数的byte数组补全8字节倍数,以0x00补全。
	 * @param datas 原始数据
	 * @return byte[] 补全后的数据
	 * */
	public static byte[] finishBlock(byte[] datas){
		byte[] tmBlock = null;
		if(datas != null){
			int n = datas.length;
			int offset = n % 8;
			int m = ((n+7)/8);
			if(offset != 0){
				tmBlock = new byte[m*8];
				System.arraycopy(datas, 0, tmBlock, 0, datas.length);
				for(int i = offset;i<8;i++){
					tmBlock[(m-1)*8+i] = (byte)0x00;//剩下的8-offset个字节,全部用十六进制数值0x00填充。
				}
			}else{
				tmBlock = new byte[m*8];
				System.arraycopy(datas, 0, tmBlock, 0, datas.length);
			}
		}else{
			throw new NullPointerException("参数为空引用");
		}
		return tmBlock;
	}
	
	public static void main(String []args){
		byte[] a = new byte[]{0,1,2,3,4,5};
		ScriUtil.createRandomBytes(a);
		byte[] b = ScriUtil.changeToReverse(a);
		
		
		byte[] c = ScriUtil.concatBytes(b, a);
		
		
		 a = ScriUtil.finishBlock(c);
		
		for(int i=0; i<a.length; i++)
			System.out.println(a[i]);
		/*System.out.println("/n");
		for(int i=0; i<c.length; i++)
			System.out.println(c[i]);*/
		
		
		
	}
	
}





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics