c# aes 예제
이러한 유형의 암호화에서는 단일 키가 암호화 및 암호 해독에 사용됩니다. 비대칭 암호화보다 빠릅니다. 그러나 그것은 또한 몇 가지 단점이 있습니다. 예를 들어 단일 키가 암호화 및 암호 해독에 사용되므로 날짜를 암호화할 때 암호 해독을 위해 동일한 키를 제공해야 합니다. 그리고 데이터를 네트워크를 통해 전송하는 경우 암호 해독이 발생한 끝에 동일한 키도 알아야 합니다. 키가 있는 메시지의 암호화/암호 해독을 수행하는 서비스가 있고 많은 클라이언트가 해당 서비스를 사용한다고 가정하면 클라이언트에 키도 제공해야 합니다. 높은 수준의 신뢰가 필요하며, 이는 기본적으로 비밀을 공유하고 있음을 의미합니다. 다음은 암호화 코드의 예입니다: (자세한 내용은 코드에서 주석 확인) 아래는 암호화 및 암호 해독 중에 예상할 수 있는 다양한 예외를 보여 주는 예제 클래스입니다. 물론 파일 및 스트림을 처리하는 방법은 System.IO.IOException 하위 클래스를 throw 할 수도 있습니다: 아래 예제에서는 AES가 바이트 배열 키를 사용하여 문자열을 암호화하고 해독하는 방법을 보여 주며, 암호와 선택적 초기화 벡터(IV)를 사용하거나 사용하지 않는 방법을 보여 줍니다. 데스크톱 PC 응용 프로그램에서 이 작업을 하는 경우 암호를 일반 문자열에 저장하지 않는 것이 좋습니다. 문자열은 수동으로 삭제할 수 없습니다.
가비지 수집기에서 삭제되지만 문자열이 완전히 삭제되기 전에 문자열이 메모리에 얼마나 오래 유지되는지 알기 어렵습니다. 메모리에 남아 있을 때 쉽게 검색할 수 있습니다. 제안된 방법 중 하나는 암호 키 스트로크를 캡처하여 바이트 배열(또는 바이트 목록)에 저장하고 사용 직후(예: 바이트 배열을 0(0)로 채우는 등) 바이트 배열을 지우는 것입니다. 암호화바이트 및 해독바이트 메서드는 바이트 배열을 입력으로 받아들이고 출력을 바이트 배열로 반환합니다. 아래 예제에서는 라이브러리에서 제공하는 AES 키 및 초기화 벡터(IV)에 대한 네 가지 가능성을 보여 줍니다. 기본값은 CBC입니다. 암호화를 해독하기 위해 암호화에 사용된 블록 모드를 아는 것이 매우 중요합니다! 예를 들어 암호화가 CTR 블록 모드를 사용했다는 것을 알고 있는 경우, @jipsonsds, 이 예에서는 텍스트가 암호화되고 패딩 및 블록 모드가 AES 클래스의 중요한 설정이 아닌 텍스트가 암호화됩니다. 즉, 생성된 암호화된 출력에 영향을 미칩니다. Richtextbox의 현재 상태(암호화되거나 암호해독된 버전의 텍스트)는 저장 단추를 사용하여 저장할 수 있습니다. 기존 파일 이나 새 파일에 저장 하도록 선택할 수 있습니다.
위쪽 텍스트 상자는 암호화/암호 해독하려는 파일의 경로에 사용됩니다. 이 상자는 OpenFile Dialog를 여는 찾아보기 단추를 사용하여 채워집니다. 텍스트 파일은 아래의 RichTextBox에서 자동으로 열립니다. 또한 임의의 텍스트를 Richtextbox에 수동으로 입력하거나 암호화하기 전에 원본 텍스트를 변경할 수 있습니다. 대칭 암호화에는 몇 가지 보안 및 신뢰 문제가 있음을 보았습니다. 따라서 비대칭 암호화는 이 문제를 해결하는 데 도움이 됩니다. 비대칭 암호화는 암호화 및 암호 해독을 위해 두 개의 키를 사용합니다.