java md5加密

/**
	 * 对字符串进行MD5加密
	 * @Title stringMD5 
	 * @Description: 
	 * @author: zhangq
	 * @param input
	 * @return 
	 *input为要加密的字符串
	 */
	public  String stringMD5(String input) {  //input为要加密的字符串

		   try {  
		      // 拿到一个MD5转换器(如果想要SHA1参数换成”SHA1”)  
		      MessageDigest messageDigest =MessageDigest.getInstance("MD5");  
		      // 输入的字符串转换成字节数组  
		      byte[] inputByteArray = input.getBytes();  
		      // inputByteArray是输入字符串转换得到的字节数组  
		      messageDigest.update(inputByteArray);  
		      // 转换并返回结果,也是字节数组,包含16个元素  
		      byte[] resultByteArray = messageDigest.digest();  
		      // 字符数组转换成字符串返回  
		      logger.info("---------------------------md5加密值"+byteArrayToHex(resultByteArray));
		      return byteArrayToHex(resultByteArray);  
		   } catch (NoSuchAlgorithmException e) {  
		      return null;  
		   }  
		}  
	
	/**
	 * 将字节数组换成成16进制的字符串
	 * @Title byteArrayToHex 
	 * @Description: 
	 * @author: zhangq
	 * @param byteArray
	 * @return 
	 *
	 */
	public static String byteArrayToHex(byte[] byteArray) {  
		  
		   // 首先初始化一个字符数组,用来存放每个16进制字符  
		   char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' };  
		   // new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方))  
		   char[] resultCharArray =new char[byteArray.length * 2];  
		   // 遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去  
		   int index = 0;  
		   for (byte b : byteArray) {  
		      resultCharArray[index++] = hexDigits[b>>> 4 & 0xf];  
		      resultCharArray[index++] = hexDigits[b& 0xf];  
		   }  
		   // 字符数组组合成字符串返回  
		   return new String(resultCharArray);
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值