Blame | Last modification | View Log | Download | RSS feed
package org.vt.ece4564.latmb;import java.security.MessageDigest;import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;public class SecurityUtil {private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";private static String convertToHex(byte[] data) {StringBuffer buf = new StringBuffer();for (int i = 0; i < data.length; i++) {int halfbyte = (data[i] >>> 4) & 0x0F;int two_halfs = 0;do {if ((0 <= halfbyte) && (halfbyte <= 9))buf.append((char) ('0' + halfbyte));elsebuf.append((char) ('a' + (halfbyte - 10)));halfbyte = data[i] & 0x0F;} while (two_halfs++ < 1);}return buf.toString();}public static String getSha1Hash(String text) {try {MessageDigest md;md = MessageDigest.getInstance("SHA-1");byte[] sha1hash = new byte[40];md.update(text.getBytes("iso-8859-1"), 0, text.length());sha1hash = md.digest();return convertToHex(sha1hash);} catch (Exception e) {}return null;}public static String calculateRFC2104HMAC(String data, String key){try {// get an hmac_sha1 key from the raw key bytesSecretKeySpec signingKey = new SecretKeySpec(key.getBytes(),HMAC_SHA1_ALGORITHM);// get an hmac_sha1 Mac instance and initialize with the signing keyMac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);mac.init(signingKey);// compute the hmac on input data bytesbyte[] rawHmac = mac.doFinal(data.getBytes());String result = "";for (byte b : rawHmac) {result += String.format("%02x", b);}return result;} catch (Exception e) {throw new RuntimeException("Failed to generate HMAC : "+ e.getMessage());}}}