2017-12-05 5 views
0

Key를 생성하기 위해 javax.crypto.KeyGenerator를 사용하고 있습니다. DES에 대한KeyGenerator에서 AES 대 DES의 키 크기

Key key = null; 
     SecureRandom rand = new SecureRandom(); 
     KeyGenerator generator; 
     try {      
      generator = KeyGenerator.getInstance("AES"); 
      generator.init(rand); 
      generator.init(128); 
      key = generator.generateKey(); 
     } catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
     } 
     System.out.println("AES key is : "); 
     System.out.println(Base64.getEncoder().encodeToString(key.getEncoded())); 

코드 :

Key key = null; 
     SecureRandom rand = new SecureRandom(); 
     KeyGenerator generator; 
     try {      
      generator = KeyGenerator.getInstance("DES"); 
      generator.init(rand); 
      generator.init(56); 
      key = generator.generateKey(); 
     } catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
     } 
     System.out.println("DES key is : "); 
     System.out.println(Base64.getEncoder().encodeToString(key.getEncoded())); 

하는 당신은 내가 DES를 사용하는 경우, 내가 (초기화하기 (56)을 통과해야 볼 수있는) 방법으로 다음

은 AES에 대한 내 코드입니다 AES에서 128에 반대했다.

누군가 내가 128 비트를 사용할 수없는 이유와이 두 유형에서 어느 암호화가 더 좋은지 설명해주십시오.

답변

1

AES는 더 큰 키 크기의 DES 고급 버전입니다. 따라서보다 안전한 암호화가 필요하다면 AES를 사용해야합니다.

데이터 암호화 표준 (DES) : DES는 파이 스텔 암호화의 구현이다. 그것은 16 라운드 Feistel 구조를 사용합니다. 블록 크기는 64 비트입니다. 키 길이는 64 비트이지만 DES의 유효 키 길이는 (56 비트)입니다. 이는 키의 64 비트 중 8 비트가 암호화 알고리즘 (체크 비트 만의 기능)에서 사용되지 않기 때문입니다.

는 고급 암호화 표준 (AES) : 요즘 가 발생 될 가능성이 더 인기가 널리 채택 대칭 암호화 알고리즘은 고급 암호화 표준 (AES)입니다. Triple DES보다 적어도 6 배 빠른 에서 발견됩니다. 키 크기가 너무 작기 때문에 DES 대체가 필요했습니다. 증가하는 컴퓨팅 성능으로 철저한 키 검색 공격에 취약한 것으로 간주되었습니다. 트리플 DES는 이러한 단점을 극복하기 위해 설계되었지만 느린 것으로 발견되었습니다.

+2

약간의 수정, AES는 실제로 "DES의 고급 버전"이 아니며 두 알고리즘은 실제로 전혀 관련이 없습니다. DES는 단순히 AES로 대체되었습니다. –