검색하면 많은 사용법이 나오는데 input 이 String인경우 아래 방법 추천한다.
public static String getMD5EncryptedString(String encTarget){
MessageDigest mdEnc = null;
try {
mdEnc = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
System.out.println("Exception while encrypting to md5");
e.printStackTrace();
} // Encryption algorithm
mdEnc.update(encTarget.getBytes(), 0, encTarget.length());
String md5 = new BigInteger(1, mdEnc.digest()).toString(16);
while ( md5.length() < 32 ) {
md5 = "0"+md5;
}
return md5;
}
출처:http://stackoverflow.com/questions/13152736/how-to-generate-an-md5-checksum-for-a-file-in-android
while ( md5.length() < 32 ) {
md5 = "0"+md5;
}
즉, BigInteger의 리턴값이 "10" 이라면 32자리까지 맞게끔 "0"을 더 붙여준다는 의미이다. 그래서 한결 같이 같은 길이를 리턴하도록 한다.
(참고로 BigInteger의 리턴값은 소문자이다. "FF"의 경우 "(32개의0)ff" 이다.)
BigInteger의 1은 입력되는 mdEnc.digest()함수로 넘어오는 data가 BigInteger숫자로 변환시 부호가 (+)양의 의미를 지니는 것을 뜻한다.
String md5 = new BigInteger(1, mdEnc.digest()).toString(16);
댓글 없음:
댓글 쓰기