package com.neohope.utils; import java.io.IOException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class NDigest { /** * Bytes to Hex String * * @param hexBytes * * @return hex string */ private static String bytesToHexString(byte[] hexBytes) { StringBuffer buf = new StringBuffer(); for (int i = 0; i < hexBytes.length; i++) { if ((hexBytes[i] & 0xff) < 0x10) { buf.append("0"); } buf.append(Long.toString(hexBytes[i] & 0xff, 16)); } return buf.toString(); } /** * calc MD5 for string * * @param textIn * * @return md5 digest string * @throws NoSuchAlgorithmException */ public static String MD5Digest(String textIn) throws NoSuchAlgorithmException { byte[] textData = textIn.getBytes(); MessageDigest md = null; md = MessageDigest.getInstance("MD5"); md.reset(); md.update(textData); byte[] encodedData = md.digest(); return bytesToHexString(encodedData); } /** * calc SHA1 for string * * @param textIn * * @return sha1 digest string * @throws NoSuchAlgorithmException */ public static String SHA1Digest(String textIn) throws NoSuchAlgorithmException { byte[] textData = textIn.getBytes(); MessageDigest md = null; md = MessageDigest.getInstance("SHA1"); md.reset(); md.update(textData); byte[] encodedData = md.digest(); return bytesToHexString(encodedData); } /** * Encode a string using Base64 encoding. * * @param textIn * @return String */ public static String base64Encode(String textIn) { sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder(); return encoder.encodeBuffer(textIn.getBytes()).trim(); } /** * Decode a string using Base64 encoding. * * @param textIn * @return String * @throws IOException */ public static String decodeString(String textIn) throws IOException { sun.misc.BASE64Decoder dec = new sun.misc.BASE64Decoder(); return new String(dec.decodeBuffer(textIn)); } /** * 使用 HMAC-SHA-1 签名方法对对textIn进行摘要 * * @param textIn * @param keyIn * @return * @throws Exception */ public static String HmacSHA1Digest(String textIn, String keyIn) throws Exception { final String MAC_NAME = "HmacSHA1"; final String ENCODING = "UTF-8"; byte[] keyData = keyIn.getBytes(ENCODING); SecretKey secretKey = new SecretKeySpec(keyData, MAC_NAME); Mac mac = Mac.getInstance(MAC_NAME); mac.init(secretKey); byte[] textData = textIn.getBytes(ENCODING); byte[] encodedData = mac.doFinal(textData); return bytesToHexString(encodedData); } // 我就是那个测试函数。。。 public static void main(String args[]) throws Exception { String key = "Y9zTQxRvxwrHOi45OoKNnIoxboerNqt3"; String text = "Good good study, day day up."; String hmacSHA1 = HmacSHA1Digest(text, key ); String base64 = base64Encode(hmacSHA1); System.out.println(hmacSHA1 ); System.out.println(cbase64); } }