본문 바로가기
→ My Meta+IT/JAVA Source

자바 암호화 Security Provider 클래스 사용 방법

by DigitalJobs 2022. 12. 6.

자바는 초기부터 JCA(Java Cryptography Architecture) 프레임워크를 JDK 1.1부터 제공하여 암호화 기능을 구현하고 있습니다. 구현 가능한 기능들로는 전자서명(digital signatures)이나 인증서의 유효성을 검사하는 등 암호화와 복호화에 관련된 기능을 포함하고 있습니다. 

 

 

이렇게 위에 언급한 JCA의 기능들은 java.security 패키지를 통해 제공되며 주요 클래스로 Security, Provider 등의 클래스가 존재합니다.

 

 

java.security (Java Platform SE 7 )

This interface represents the abstract notion of a principal, which can be used to represent any entity, such as an individual, a corporation, and a login id.

docs.oracle.com

위의 링크는 security 패키지 안에 구현 가능한 다양한 클래스들을 보여주고 있습니다. 

 

기존의 Java에서 제공되던 JCA에서 보안상 미뤄왔던 기능이 JDK 1.4부터 포함되면서 현재는 JCA보다 확장된 JCE 프레임워크가 사용되고 있으며 이것은 javax.crypto 패키지에 포함되어 있습니다.  javax.crypto 패키지가 사용되면서 BouncyCastle과 같은 인증된 외부 암호화 라이브러리를 보안 공급자(provider)로 등록하여 사용하는 것과 같이 새로운 알고리즘을 쉽게 추가 후 사용하는 것이 가능해졌습니다.

 

 

 

추가하는 방법으로는 Security클래스의 addProvider()메소드를 사용하여 가능합니다. 

 

 

Security (Java Platform SE 7 )

Adds a provider to the next position available. First, if there is a security manager, its checkSecurityAccess method is called with the string "insertProvider."+provider.getName() to see if it's ok to add a new provider. If the default implementation of c

docs.oracle.com

public void initialize(KeyProvider keyProvider) throws KeyManagementException {
         this.keyProvider = keyProvider;
         if (this.aesKeyedCipherProvider == null) {
                    this.aesKeyedCipherProvider = new AESKeyedCipherProvider();
          }
          if (Security.getProvider("BC") == null) {
                    Security.addProvider(new BouncyCastleProvider());
          }
}

위의 코드에서 Security.addProvider(new BouncyCastleProvider()); 이 부분이 프로바이더에 새로운 암호화 기술은 BouncyCastleProvider()를 추가하는 구문입니다.

public void initialize(KeyProvider keyProvider) throws KeyManagementException {
  this.keyProvider = keyProvider;
  if (this.aesKeyedCipherProvider == null) {
    this.aesKeyedCipherProvider = new AESKeyedCipherProvider();
  }
  if (Security.getProvider("BC") == null) {
    Security.addProvider(new BouncyCastleProvider());
  }
}
※ 참고사항
BouncyCastleProvider를 추가하기 전에 본인의 자바 버전에 맞는 외부 라이브러리 등록을 하셔야 사용이 가능합니다.

아래의 사이트로 이동하셔서 다운로드하신 후 사용하시는 에디터에서 라이브러리로 추가해 주시길 바랍니다.  

 

 

관련 예제 사이트 링크

 

java.security.Security.addProvider java code examples | Tabnine

if(Security.getProvider("BC") == null) { Security.addProvider(new BouncyCastleProvider());

www.tabnine.com

 

댓글