SHA256計算後進行十六進位制轉碼
阿新 • • 發佈:2018-12-04
/** * 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; } }