0,0 → 1,71 |
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)); |
else |
buf.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 bytes |
SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), |
HMAC_SHA1_ALGORITHM); |
|
// get an hmac_sha1 Mac instance and initialize with the signing key |
Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM); |
mac.init(signingKey); |
|
// compute the hmac on input data bytes |
byte[] 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()); |
} |
} |
|
} |