2014-07-14 2 views
-1

내 코드를 실행하는 동안 다음 예외가 발생합니다. 여기java.security.NoSuchAlgorithmException : PBEWithMD5AndDES를 지원하는 제공자를 찾을 수 없습니다.

이 오류 나는 javax의-crypto.jar을 사용했다

Cipher c = Cipher.getInstance("PBEWithMD5AndDES"); 

을 유발하는 코드.

Caused by: java.security.NoSuchAlgorithmException: Cannot find any provider supporting PBEWithMD5AndDES 
    at javax.crypto.Cipher.getInstance(DashoA13*..) 

내 런타임

C:\Documents and Settings\592635>java -version 
java version "1.6.0_22" 
Java(TM) SE Runtime Environment (build 1.6.0_22-b04) 
Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing) 

가 어떤 이유가 될 수있다? 도와주세요.

+1

DES 이외에 더 이상 MD5를 사용하지 않아야합니다. MD5는 깨졌으며 DES는 단지 수 분 내에 무차별 적으로 강제 될 수있는 키 크기를 가지고 있습니다. –

+0

런타임 환경을 나타낼 수 있습니까? –

답변

0

Oracle JRE는 이와 같이 구성되었거나 손상되었습니다. 예를 들어, 필요한 알고리즘을 포함한 프로 바이더가 Java JRE의 lib/security/java.security의리스트로부터 삭제되었을 가능성이 있습니다.

Oracle JRE에없는 경우 런타임에 알고리즘을 구현하는 공급자가 없을 수 있습니다. Java RE는 (적어도 not at the Java 7 level)을 지원하는 데 필요하지 않습니다. 이 경우 Bouncy Castle 또는 Spongy Castle 라이브러리를 설치하십시오 (문서에 따라).

+0

사실, PBEWithMD5AndDES는 Java 7 및 Java 8에 대해 해당 문서의 [Cipher 섹션] (http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#Cipher)에 구체적으로 언급되어 있습니다. [Java 6도] (http://docs.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#Cipher). –

+0

내 쥬어가 그렇게 구성되어 있는지 확인하는 방법 ?? –

+0

@OlegEstekhin 그리고 8 또한. 따라서 알고리즘은 Oracle JRE에서 기본적으로 사용 가능해야합니다. 하지만 다른 사람들은 그렇지 않습니다. PS는 이러한 정보를 자유롭게 편집 할 수 있습니다. –

관련 문제