2014-04-29 2 views
1

좋아, 여기 모두 내 문제입니다. MD5 해시 문자열을 암호화하려고합니다. NjljNWZjZWJhYTY1YjU2MGVhZjA2YzNmYmViNDgxYWU0NGI4ZDYxOA== 다음MD5 해싱 안드로이드에 대한

가 예상 출력 : 여기 aaf53a928ca9baa6df03a5fe6e3c7b71

그리고 내 안드로이드 응용 프로그램에서 얻고 무엇인가 : 여기 해시 시도하고있는 문자열입니다 3cc9a8b9d101349af1b4e17ae3b7450f

지금 여기 내 코드 오전 이 코드는 내가 위의 예상치 못한 결과를 얻을 안드로이드에서 실행하지만, 난 그냥 같은 문자열에서 자바 프로그램의 통과로이 코드를 실행하면 내가 일 수와

public final String computeMD5Hash(final String pass){ 
    try { 
     // Create MD5 Hash 
     MessageDigest digest = MessageDigest.getInstance("MD5"); 
     digest.update(pass.getBytes()); 
     byte messageDigest[] = digest.digest(); 

     // Create Hex String 
     StringBuffer hexString = new StringBuffer(); 
     for (int i = 0; i < messageDigest.length; i++) { 
      String h = Integer.toHexString(0xFF & messageDigest[i]); 
      while (h.length() < 2) 
       h = "0" + h; 
      hexString.append(h); 
     } 
     System.out.println(hexString.toString()); 
     return hexString.toString(); 

    } catch (NoSuchAlgorithmException e) { 
     e.printStackTrace(); 
    } 

    return ""; 

:이 작업을 수행하기 위해 사용 e 예상 출력 ...

지구상에서 무슨 일이 벌어지고 있습니까? 나는 며칠 동안이 일에 곤란을 겪었고 단서를 찾기 위해 인터넷을 샅샅이 뒤졌습니다. 바이트를 UTF-8, ASCII, ISO-8859-1로 변경하려고 시도했으며 기본값을 사용했습니다. 항상 올바르지 않은 동일한 문자열을 얻습니다.

----------- 편집 ---------- 나는 그것을 알아 낸 솔루션 ------

, 내가 사용했다 Base64.encodeToString (bytes, Base64.Default) Base63.NO_WRAP 플래그 옵션을 사용 했어야하는 ... 개행을 입력하고 모든 것을 던지는 중이었습니다. 모두 감사합니다

답변

1

잘못된 문자열을 전달해야합니다. 방금 코드를 실행했고 결과는 다음과 같습니다. aaf53a928ca9baa6df03a5fe6e3c7b71

나는 제공된 문자열을 직접 설정했습니다.

직접 테스트 해보십시오. 최종 문자열을 제거하고 패스의 값을 명시 적으로 설정하십시오. NjljNWZjZWJhYTY1YjU2MGVhZjA2YzNmYmViNDgxYWU0NGI4ZDYxOA ==

+0

여기에 동일합니다. 입력을 확인하십시오 :) – matiash

+0

Yup! 당신은 절대적으로 옳습니다. 안드로이드 앱에서 하드 코딩을하면 예상되는 결과를 얻습니다. 왜 제대로 전달되지 않는지 알아 내야합니다. 고마워요. 안드로이드 앱에 실제로 코딩하는 것에 대해 생각하지 않았다는 것을 믿지 마세요.