2013-01-22 2 views
1

자바 : 어떤 이유가 MessageDigest.getInstance("MD5")이면 null을 반환할까요? 이것은 최근까지도 잘 작동했습니다.자바 : MessageDigest.getInstance ("MD5") null을 반환

+0

getInstance 메서드를 호출하는 방법에 대한 코드 샘플을 추가 할 수 있습니까? 또한 환경 및 Java 버전 데이터를 제공합니다. 자바 설치에 대해 최근에 변경된 사항이 있습니까? –

+0

우리가 볼 수있는 코드가 없으면 우리는 도울 수 없습니다. 코드를 게시 할 수 있습니까? –

+3

"* 이것은 최근까지는 잘 작동했습니다. *".. 그리고 최근에 무슨 일이 있었습니까? – mre

답변

2

이 난 질문에 대해

MessageDigest.getInstance ("MD5") 널 (null)

당신이 의미 MessageDigest 클래스가 java.security.MessageDigest 경우 해당 메서드에서 하지는 null를 돌려 의심 기존 알고리즘을 매개 변수로 지정하지 않은 경우 jdk1.7

public static MessageDigest getInstance(String algorithm) 
    throws NoSuchAlgorithmException { 
     try { 
      Object[] objs = Security.getImpl(algorithm, "MessageDigest", 
              (String)null); 
      if (objs[0] instanceof MessageDigest) { 
       MessageDigest md = (MessageDigest)objs[0]; 
       md.provider = (Provider)objs[1]; 
       return md; 
      } else { 
       MessageDigest delegate = 
        new Delegate((MessageDigestSpi)objs[0], algorithm); 
       delegate.provider = (Provider)objs[1]; 
       return delegate; 
      } 
     } catch(NoSuchProviderException e) { 
      throw new NoSuchAlgorithmException(algorithm + " not found"); 
     } 
    } 

에서

코드는 그 다음 NPE이 클래스에서 일어난, 널, 다음, MD 또는 대리인이 null이어야합니다 반환합니다.

코드를 단계별로 확인하고 디버그하여 어떤 객체가 null인지 확인하십시오.

+1

켄트 - 나는 오류 로그에서 줄 번호를 벗어나고 있었지만 디버깅 후에는 그 줄 바로 아래에있는 줄로 보인다. 따라서 질문은 더 이상 유효하지 않습니다. 응답 시간을내어 주셔서 감사합니다. – stak

+0

@stak Google에 알려 주셔서 감사합니다. – mre

관련 문제