사용자의 정보를 서버에 보내기 위해서 해쉬알고리즘으로 데이터를 

으깨기로 했습니다.


수많은 알고리즘 중에서 안드로이드에서 활용하기 쉬운 MD5를 쓰려고 했으나

SHA가 더 좋다는걸 알게 되어 SHA1을 사용했습니다.


public static String sha1(String input) throws NoSuchAlgorithmException, UnsupportedEncodingException {

MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");

messageDigest.update(input.getBytes("UTF-8"), 0, input.length());

byte[] sha1hash = messageDigest.digest();

Log.d("#@#", "" + sha1hash.toString());

return convertToHex(sha1hash);

}


처음에 byte 코드를 new String 으로 만들어서 로그를 찍었습니다.

결과값은 안나오더군요.. 가만히 생각해보니 아스키코드표에 없는 

특수문자로 인해서 데이터가 안나올수 있겠다 싶어 toString 으로 확인 했는데...

같은 인풋스트링을 넣었는데 매번 다른 결과값이 나오는것이 확인이 되었습니다.

짜증이 솟구치는 .... 뱅신 안드로이드를 외칠려는 찰나..


아무래도 같은 데이터인데.. 표기하는데 문제가 있지 않나 싶어..


Hex로 변환하기로 했습니다.


인터넷에서 주서온 코드 


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();

}



매번 같은 결과가 나타나네요 ㅎ

스트링 검사는 요기에서 

http://www.textdiff.com/


08-16 16:34:51.811: D/#@#(8253): [B@43899560  (byte to String)

08-16 16:34:51.811: D/#@#(8253): 0c332ba84de9a2a4e0e84b4ea680769a84104bba (hex convert)


08-16 16:35:00.159: D/#@#(8253): [B@434664f0  ----- > 매번 다른 값이 찍힘 ㅠㅠ

08-16 16:35:00.159: D/#@#(8253): 0c332ba84de9a2a4e0e84b4ea680769a84104bba



이벤트 공지 ~~~
"좋아요" 를 써주시면 무료포인트 200점을 드려요..