일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 시스템
- flet
- 코틀린
- kotlin
- python
- write by chatGPT
- JVM
- 자바
- chatGPT's answer
- spring data jpa
- 파이썬
- write by GPT-4
- 리눅스
- android
- spring integration
- 웹 크롤링
- 인프라
- NIO
- 소프트웨어공학
- GPT-4's answer
- Database
- 자바네트워크
- Java
- jpa
- oracle
- 고전역학
- 데이터베이스
- 역학
- 자바암호
- 유닉스
- Today
- Total
기억을 지배하는 기록
자바을 이용한 암호학 - 5 본문
Chapter 3 Key Management
PLT 3.1 Key Class
java.security.Key 인터페이스
암호화 키를 캡슐화한 인터페이스이다.
주요 Method :
- public String getAlgorithm() : 키가 사용된 암호 알고리즘 이름을 리턴.
- public byte[] getEncoded() : 키의 암호화 값을 구할 수 있다.
- public String getFormat() : 암호화 하는데 사용된 키 포맷의 이름을 리턴한다.
자식 인터페이스:
- java.security.PublicKey,
- java.security.PrivateKey,
- javax.crypto.SecretKey
java.security.KeyPair 클래스
비대칭키 한쌍(공개키, 개인키)을 캡슐화 한다.
주요 Method :
- publicKeyPair(PublicKey publicKey, PrivateKey, privateKey) : 주어진 공개키와 개인키로 KeyPair를 생성한다.
- public PublicKey getPublic() : 공개키를 리턴한다.
- public PrivateKey getPrivate() : 개인키를 리턴한다.
PLT 3.2 Key Generator
javax.crypto.KeyGenerator
대칭키 방식
주요 Method :
- public final SecretKey generateKey() : 새로운 랜덤 SecretKey를 생성한다.
- public String getAlgorithm() : KeyGenerator 객체에 사용된 알고리즘의 이름을 리턴합니다.
- public static KeyGenerator getInstance(.String algorithm) : 주어진 알고리즘으로 인스턴스 생성
- pubic static KeyGenerator getInstance(String algorithm, String provider) : 주어진 알고리즘과 프로바이터로 인스턴스 생성
- pubic Provider getProvider() : 사용된 프로바이터 리턴
- public void init(AlgorithmParameterSpec params) : 제공된 파라미터를 사용하여 초기화 한다.
- public void init(AlgorithmParameterSpec params, SecureRandom random) : 제공된 파라미터를 사용하여 초기화 한다.
- public void init(int keysize) : 주어진 크기로 키를 생성하기 위하여 초기화한다.
- public void init(int keysize, SecureRandom random) : 주어진 키와 랜덤소스로 초기화 한다.
- public void init(java.security.SecureRandom random) : 주어진 랜덤소스로 초기화 한다.
KeyGenerator kg = KeyGenerator.getInstance("DES"); kg.init(new SecureRandom()); SecretKey key = kg.generateKey() |
java.security.KeyPairGenerator
비대칭 방식 key Pair 생성
- public KeyPair generateKeyPair () : key 페어를 생성합니다.
- public final KeyPair genKeyPair () : key 페어를 생성합니다.
- public String getAlgorithm () : 이 key 페어 제네레이터의 알고리즘의 표준명을 돌려줍니다.
- public static KeyPairGenerator getInstance (String algorithm) : 지정된 다이제스트 알고리즘을 구현하는 KeyPairGenerator 오브젝트를 작성합니다.
- public static KeyPairGenerator getInstance (String algorithm, String provider) : 지정된 프로바이더로부터 지정된 알고리즘이 사용 가능한 경우에, 그 프로바이더가 제공한 알고리즘을 구현하는 KeyPairGenerator 오브젝트를 작성합니다.
- public final Provider getProvider () : 이 열쇠 페어 제네레이터 오브젝트의 프로바이더를 돌려줍니다.
- pubic void initialize (AlgorithmParameterSpec params) : 제공된 파라미터를 사용하여 KeyPairGenerator를 초기화 한다.
- public void initialize (AlgorithmParameterSpec params, SecureRandom random) : 제공된 파라미터를 사용하여 KeyPairGenerator를 초기화 한다.
- public void initialize (int keysize) : 랜덤 비트의 소스 역할을 하는 새로운 SecureRandom을 생성하는 것을 제외하고 임의의 키 사이즈에 대하여 key 페어 제네리이터를 초기화합니다.
- pubic void initialize (int keysize, SecureRandom random) : 제공된 랜덤 비트 소스를 사용하여 임의의 키 사이즈 대하는 key 페어 제네레이터를 초기화합니다.
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA"); kpg.initialize(1024); KeyPair pair = kpg.getKeyPair(); |
PLT 3.3 Key 해석기
키를 저장하는 방법 중 하나는 키를 직렬화 하여 저장하는 것과 단순히 바이트의 배열과 같은형태로 키를 저장하거나 전송하는 방법이 있다. 키 객체를 바이트로 또는 역으로 변환하는 방법이 다음의 클래스에 정의 되어있다.
javax.crypto.spec.SecretKeySpec
바이트 배열을 비밀키로 변환하는 가장 간단한 방법 대칭키에서만 사용됩니다.
주요 Method :
- SecretKeySpec(byte[] key, int offset, int len, String algorithm) : offset과 제공된 바이트의 배열의 len 바이트를 사용하여 SecretKeySpec을 생성한다. 키는 제공된 알고리즘을 따른다.
- SecretKeySpec(byte[] key, String algorithm) : 제공된 바이트 배열을 사용하여 SecretKeySpec을 생성한다. 키는 제공된 알고리즘을 따른다.
SecureRandom sr = new SecureRandom(); byte[] keyBytes = new byte[20]; sr.nextBytes(keyBytes); SecretKey key = new SecretKeySpec(keyBytes, "DES"); |
javax.crypto.SecretKeyFactory
주요 Method :
- public static final SecretKeyFactory getInstance(String algorithm) : 주어진 알고리즘에 대하여 새로운 SecretKeyFactory를 생성한다 알고리즘은 “DES"와 같은 대칭 암호 알고리즘이다.
- pubic static final SecretKeyFactory getInstance(String algorithm, String provider) : 주어진 프로바이더로 SecretKeyFActory를 생성한다.
- public final SecretKey generateSecret(KeySpec keySpec) : KeySpec를 SecretKey로 변환하기 위하여 사용된다.
public SecertKey makeDESKey(byte[] input, int offset) throws NoSuchAlgorithmException, InvalidkeyException, InvalidkeySpecException{ SecretKeyFactory desFactory = SecretKeyFactory.getInstance("DES"); KeySpec spec = new DESKeySpec(input, offset); return desFactory.generateSecret(spec); } |
- public final KeySpec getKeySpec(SecretKey key, java.lang.Class keySpec) : 주어진 SecretKey로부터 KeySpec을 생성한다.
Public byte[] makeBytesFromDESKey (SecretKey key) throw NoSuchAlgorithmException, InvaildKeySpecException { SecretKeyFactory desFactory = SecretKeyFactory.getInstance("DES"); DESKeySpec spec = (DESKeySpec)desFactory.getKeySpec(Key, DESKeySpec.class); return spec.getKey(); } |
java.security.KeyFactory
주요 Method :
- public static final KeyFactory getInstance (String algorithm) : 지정된 다이제스트 알고리즘을 구현하는 KeyFactory 오브젝트를 작성합니다. 알고리즘 이름은 비대칭 암호 알고리즘 이름이거나 “DSA"와 같은 서명 알고리즘 이어야 합니다.
- public static final KeyFactory getInstance (String algorithm, String provider) : 지정된 프로바이더로부터, 지정된 알고리즘의 KeyFactory 오브젝트를 작성합니다.
- public final PrivateKey generatePrivate (KeySpec keySpec) : 지정된 Key Spec으로부터 개인키를 생성하는데 사용
- public final PublicKey generatePublic (KeySpec keySpec) : 지정된 Key Spec으로부터 공개키를 생성하는데 사용
public final KeySpec getKeySpec (Key key, Class keySpec) : 주어진 키로부터 키 스펙을 생성한다.
'오래된글 > Java' 카테고리의 다른 글
자바을 이용한 암호학 - 7 (0) | 2018.04.07 |
---|---|
자바을 이용한 암호학 - 6 (0) | 2018.04.07 |
자바을 이용한 암호학 - 4 (0) | 2018.04.07 |
자바을 이용한 암호학 - 3 (0) | 2018.04.07 |
자바을 이용한 암호학 - 2 (0) | 2018.04.07 |