728x90
반응형

java.security.NoSuchProviderException: No such provider: BC 에러 원인과 해결 방법

 

원인

 Cipher cipher = Cipher.getInstance("SEED/CBC/PKCS5Padding", "BC");

위의 코드를 실행했더니 아래의 에러가 났음

 

먼저 코드를 살펴보자

SEED 알고리즘은 java.security의 Provider에서 제공하지 않는 알고리즘이기에 org.bouncycastle 를 gradle에 추가해서 가져오려고 했음

// gradle
implementation group: 'org.bouncycastle', name: 'bcprov-jdk18on', version: '1.77'
implementation group: 'org.bouncycastle', name: 'bcpkix-jdk18on', version: '1.77'

 

BC는 bouncycastle의 약자로 저렇게 가져다 쓰려고 "BC"라고 함

여기서 내가 Bouncy Castle Provider 등록하는 과정을 빼먹었기에 Providers.getProviderList().getProvider("BC") 이렇게  찾으려고 하면 찾을 수 없다고 에러가 나는 것임

 


해결 방법

Bouncy Castle Provider를 수동으로 Security Provider에 등록해주기!

 

예시 코드

static {
    Security.addProvider(new BouncyCastleProvider());
}

 

반응형
복사했습니다!