SHA256计算后进行十六进制转码

	/**
	 * sha256计算后进行16进制转换
	 * 
	 * @param data 待计算的数据
	 * @param encoding 编码
	 * @return 计算结果
	 */
	public static byte[] sha256X16(String data, String encoding) {
		byte[] bytes = sha256(data, encoding);
		StringBuilder sha256StrBuff = new StringBuilder();
		for (int i = 0; i < bytes.length; i++) {
			if (Integer.toHexString(0xFF & bytes[i]).length() == 1) {
				sha256StrBuff.append("0").append(
						Integer.toHexString(0xFF & bytes[i]));
			} else {
				sha256StrBuff.append(Integer.toHexString(0xFF & bytes[i]));
			}
		}
		try {
			return sha256StrBuff.toString().getBytes(encoding);
		} catch (UnsupportedEncodingException e) {
			logger.error(e.getMessage(), e);
			return null;
		}
	}
	
	
	/**
	 * sha256计算
	 * 
	 * @param datas 待计算的数据
	 * @param encoding  字符集编码
	 * @return
	 */
	private static byte[] sha256(String datas, String encoding) {
		try {
			return sha256(datas.getBytes(encoding));
		} catch (UnsupportedEncodingException e) {
			logger.error("SHA256计算失败", e);
			return null;
		}
	}
	
	/**
	 * sha256计算.
	 * @param datas 待计算的数据
	 * @return 计算结果
	 */
	private static byte[] sha256(byte[] data) {
		MessageDigest md = null;
		try {
			md = MessageDigest.getInstance(ALGORITHM_SHA256);
			md.reset();
			md.update(data);
			return md.digest();
		} catch (Exception e) {
			logger.error("SHA256计算失败", e);
			return null;
		}
	}

猜你喜欢

转载自blog.csdn.net/jellyjiao2008/article/details/84110836
今日推荐