java 암호화 복호화 예제

이 기사에서는 고급 암호화 표준 (AES), 일반적인 블록 모드, 패딩 및 초기화 벡터가 필요한 이유 및 수정으로부터 데이터를 보호하는 방법에 대한 속도를 제공합니다. 마지막으로 대부분의 보안 문제를 피하면서 Java로 이를 쉽게 구현하는 방법을 보여 드리고자합니다. 다음은 Java 암호화 아키텍처(JCA)를 사용하여 AES-GCM을 사용하여 암호화/해독하는 데 필요한 단계입니다. 미묘한 차이로 인해 코드가 완전히 안전하지 않을 수 있으므로 다른 예제와 혼합하지 마십시오. 그렇다면 첫 번째 블록은 어떨까요? 가장 쉬운 방법은 예를 들어 0으로 가득 찬 블록을 사용하는 것이지만 동일한 키와 일반 텍스트가있는 모든 암호화는 동일한 암호 텍스트를 초래합니다. 또한 다른 일반 텍스트에 동일한 키를 다시 사용하면 키를 쉽게 복구 할 수 있습니다. 더 좋은 방법은 임의의 초기화 벡터(IV)를 사용하는 것입니다. 이것은 한 블록 (128 비트)의 크기에 관한 임의의 데이터에 대한 멋진 단어일 뿐입니다. 암호화의 소금처럼 생각, 즉, IV는 공개 될 수 있습니다, 무작위로 한 번만 사용해야합니다. 하지만 IV를 알지 못하면 CBC XORs가 이전 블록의 일반 텍스트가 아닌 암호 텍스트이기 때문에 첫 번째 블록의 암호 해독을 방해할 뿐입니다.

따라서 암호화 끝에 있는 암호 인스턴스에서 byte[]로 IV를 얻어야 합니다. 우리가 알다시피이 코드를 대체, 암호화의 2 기본 유형이 있다 – 비대칭 및 대칭 암호화. 비대칭 암호화는 두 개의 서로 다른 키를 공개 키와 개인 키로 사용합니다. 여기서는 공개 키로 중요한 정보를 암호화할 수 있으며 일치하는 개인 키가 동일한 암호를 해독하는 데 사용됩니다. 비대칭 암호화는 VPN 클라이언트 및 서버, SSH 등과 같은 2개의 다른 엔드포인트가 관련된 경우 주로 사용됩니다. AES 암호화를 자바 프로그램에 사용하는 예제를 살펴보겠습니다. 자바에서 암호는 데이터 암호화 / 암호 해독을 수행하기위한 API입니다. 암호 인스턴스를 만들 때 AES, DES, RC4 등과 같은 많은 암호화 알고리즘을 지정할 수 있습니다. 암호 인스턴스는 실제 암호화/암호 해독을 수행 하기 위해 기본 알고리즘 특정 구현을 호출 합니다.

암호화/암호 해독을 수행하기 전에 키를 만들어야 하며 암호화/암호 해독을 수행하는 데 사용됩니다. 이 모든 것을 수행하기위한 샘플 프로그램은 : ECB 모드는 이 모드가 시술적으로 안전하지 않기 때문에 블록 암호에서 사용할 때 안전하지 않습니다. 자세한 내용은 다음 을 자세히 알아볼 수 있습니다: https://crypto.stackexchange.com/questions/20941/why-not`t-i-use-ecb-암호화/20946#20946 동일한 키가 모든 일반 텍스트를 암호화하는 데 사용되고 공격자가 이 키를 발견하면 모든 암호가 암호해독될 수 있습니다. 비슷한 방법으로. 우리는 더 암호화 프로세스를 개선하기 위해 소금과 반복을 사용할 수 있습니다. 다음 예제에서는 128비트 암호화 키를 사용하고 있습니다. 다음은 aes 암호화를 위한 온라인 도구입니다.