java加密體系-SHA256
阿新 • • 發佈:2018-11-09
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.apache.commons.codec.digest.DigestUtils; /** * SHA256 單向雜湊函式 指紋 訊息摘要演算法 雜湊函式 * 值為32個位元組 * @author NP0612 */ public class LukeSHA256 { /** * 利用java原生的摘要實現SHA256加密 * @param bytes 加密後的報文 * @return */ public static String sha256Hex(byte[] bytes){ MessageDigest messageDigest; String encodeStr = ""; try { messageDigest = MessageDigest.getInstance("SHA-256"); messageDigest.update(bytes); encodeStr = byte2Hex(messageDigest.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return encodeStr; } /** * 將byte轉為16進位制 * @param bytes * @return */ private static String byte2Hex(byte[] bytes){ StringBuffer stringBuffer = new StringBuffer(); String temp = null; for (int i=0;i<bytes.length;i++){ temp = Integer.toHexString(bytes[i] & 0xFF); if (temp.length()==1){ //1得到一位的進行補0操作 stringBuffer.append("0"); } stringBuffer.append(temp); } return stringBuffer.toString(); } public static void main(String[] args) { byte[] bytes = new byte[2]; bytes[0] = 44; bytes[1] = 11; System.out.println(LukeSHA256.sha256Hex(bytes)); System.out.println(DigestUtils.sha256Hex(bytes)); //16進位制字串兩位佔一個位元組 System.out.println(DigestUtils.sha256Hex(bytes).length()); } }
結果:
884b4895e36a0df81b271dc1049417c67349dc67456541eb3013f13e01ee7156
884b4895e36a0df81b271dc1049417c67349dc67456541eb3013f13e01ee7156
64