Java의 기본 암호화/AES 동작이 풀렸습니다
Java의 암호화 API로 작업할 때 AES 암호화의 기본 설정 동작은 다음과 같을 수 있습니다. 약간 수수께끼. 진행 상황에 대한 자세한 내용은 다음과 같습니다.
질문: 다음에 대한 기본 Java 암호화 동작은 무엇입니까?
<code class="java">SecretKeySpec localSecretKeySpec = new SecretKeySpec(arrayOfByte, "AES"); Cipher localCipher = Cipher.getInstance("AES");</code>
구체적으로 이러한 클래스는 어떻게 생성됩니까? 초기화 벡터(IV)와 추가 설명 없이 "AES"가 지정된 경우 기본 암호화 모드는 무엇입니까?
답변:
Oracle JDK 7의 경우 기본값은 AES 암호화에 사용되는 암호는 AES/ECB/PKCS5Padding입니다. 놀랍게도 이 정보는 Java 보안 문서에 명시적으로 명시되어 있지 않습니다. 대신, 이를 해결하려면 몇 가지 실제 테스트가 필요합니다.
<code class="java">Cipher cipher = Cipher.getInstance("AES"); System.out.println(cipher.getAlgorithm()); // Outputs: AES/ECB/PKCS5Padding</code>
이 기본 구성에서는
이 기본 동작은 기본 시나리오에 충분할 수 있지만 일반적으로 IV 생성이 부족하고 데이터 유출 가능성이 있기 때문에 대부분의 애플리케이션에서는 안전한 것으로 간주되지 않는다는 점에 유의하는 것이 중요합니다. ECB 모드. 이러한 보안 문제를 해결하려면 특정 요구 사항에 맞는 암호화 모드 및 IV 생성 전략을 명시적으로 정의하는 것이 좋습니다.
위 내용은 추가 구성 없이 Java의 기본 암호화/AES 동작은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!