Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Hash {
- /**
- * 16진수를 문자열로 변환
- * @param data 변환할 16진수
- * @return 변환된 16진수 문자열
- */
- private static String convertToHex(byte[] data) {
- StringBuilder buf = new StringBuilder();
- for (byte b : data) {
- int halfbyte = (b >>> 4) & 0x0F;
- int two_halfs = 0;
- do {
- buf.append((0 <= halfbyte) && (halfbyte <= 9) ? (char) ('0' + halfbyte) : (char) ('a' + (halfbyte - 10)));
- halfbyte = b & 0x0F;
- } while (two_halfs++ < 1);
- }
- return buf.toString();
- }
- /**
- * 문자열의 SHA-1 해쉬값 얻기
- * @param text SHA-1 해쉬값을 얻어올 문자열
- * @return text 의 SHA-1 해쉬 String
- */
- public static String SHA1(String text) throws NoSuchAlgorithmException, UnsupportedEncodingException {
- MessageDigest md = MessageDigest.getInstance("SHA-1");
- md.update(text.getBytes("iso-8859-1"), 0, text.length());
- byte[] sha1hash = md.digest();
- return convertToHex(sha1hash);
- }
- /**
- * 문자열의 HMAC 해쉬값 얻기
- * @param type 사용할 HMAC 알고리즘 ("HmacSHA1")
- * @param value HMAC 해쉬값을 얻어올 문자열
- * @param key HMAC 해쉬값 생성에 필요한 key
- * @return value 의 HMAC 해쉬 String
- */
- public static String HMAC(String type, String value, String key) throws NoSuchAlgorithmException, InvalidKeyException{
- javax.crypto.Mac mac = javax.crypto.Mac.getInstance(type);
- javax.crypto.spec.SecretKeySpec secret = new javax.crypto.spec.SecretKeySpec(key.getBytes(), type);
- mac.init(secret);
- byte[] digest = mac.doFinal(value.getBytes());
- StringBuilder sb = new StringBuilder(digest.length*2);
- String s;
- for (byte b : digest){
- s = Integer.toHexString(b&0xFF);
- if(s.length() == 1) sb.append('0');
- sb.append(s);
- }
- return sb.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement