2013-10-31 7 views
0

탄력성을 사용하여 Elliptic Curve Diffie Hellman을 구현 중입니다. bcprov-jdk15on-149.jar을 사용하고 있습니다. 그러나java.security.NoSuchProviderException : JCE가 서블릿 내의 프로 바이더 BC를 인증 할 수없는 경우

java.security.NoSuchProviderException는 : JCE는

예외가 발생하는 공급자 BC를 인증 할 수 없습니다. 그것은 다음 줄에서 발생 KeyAgreement.getInstance("ECDHC", "BC");

KeyAgreement aKeyAgree = null; 
try { 
    //exception occur here 
    aKeyAgree = KeyAgreement.getInstance("ECDHC", "BC"); 
} 

예외는

java.security.NoSuchProviderException : JCE는 javax.crypto.JceSecurity.getInstance (JceSecurity.java에서 공급자 BC를 인증 할 수 없습니다 : javax.crypto.KeyAgreement.getInstance (KeyAgreement.java:223)

에서 101)은 I java.sec에 탄력 성 제공자를 추가 JRE의 urity 파일. 그러나 도움이되지 않았습니다. 이 상황에 대한 해결책을 알고 싶습니다.
또한이 문제는 서블릿에서만 발생합니다. J2SE 프로젝트로 테스트했는데 코드가 정상적으로 작동합니다. 예외는 내가 이것을 서블릿에 넣었을 때만 던져진다.

+0

JRE는 BouncyCastle 제공자를 집어 없습니다. Security.addProvider (new BouncyCastleProvider())를 사용하여 수동으로 추가하려고합니다. – user1516873

+0

내 코드에 이미 있습니다. – deltaaruna

+0

현재 사용중인 버전은 무엇입니까? – user1516873

답변

1

그래서 가능한 이유는 :

  1. 당신은 받는다는 그늘 플러그인, 예를 들면, 어떤 방법으로 bcprovider.jar을 재 포장. 그것은 잘못된 BC 서명을 만들었습니다.
  2. BC 제공자를 한 번 이상 추가/제거했습니다. 예 : How do I get javax.crypto classes such as javax.crypto.Cipher to work on a servlet with jboss?
  3. jre 설치 또는 일부 jar US_export_policy.jar, local_policy.jar가 손상되었거나 서명이 유효하지 않습니다. 이것을 확인하기 위해 다른 공급자와 함께 일부 암호화 작업을 시도하십시오. 예를 들어 2K RSA 키를 만듭니다. 수출 JCE의 제한
  4. 문제 : 다운로드 및 설치 UnlimitedJCEPolicy는 https://edelivery.oracle.com/otn-pub/java/jce/7/UnlimitedJCEPolicyJDK7.zip