대칭 암호화와 비대칭 암호화

C# 개념



대칭 암호화는 스트림에서 수행되는 반면 비대칭 암호화는 적은 수의 바이트에서 작동합니다.



암호화란 무엇입니까?



암호화는 데이터를 가로채더라도 내용을 이해할 수 없도록 데이터를 기호로 변환하는 것을 의미합니다.

암호화 기술에는 주로 두 가지 유형이 있습니다.
  • 대칭 암호화
  • 비대칭 암호화

  • 대칭 암호화란 무엇입니까?



    대칭 암호화는 스트림에서 실행되므로 방대한 양의 데이터를 암호화하는 데 유용합니다.

    Let us consider an example of writing encrypted text into a .txt file and understand symmetric encryption step by step.



    파일 스트림 생성



    OpenOrCreate 파일 모드를 사용하여 새 파일 스트림을 만듭니다.

    FileStream myStream = new FileStream("test.txt", FileMode.OpenOrCreate);
    


    AES 인스턴스



    기본 Aes 구현 클래스의 고유한 인스턴스를 빌드하고 스트림을 암호화하십시오.

    Aes aes = Aes.Create();
    
    byte[] key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16 };
    
    byte[] iv = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16 };
    


    암호화 스트림 생성



    CryptoStream을 빌드하고 FileStream을 전달하고 Aes 클래스로 암호화하고 StreamWriter에 전달합니다.

    CryptoStream cryptStream = new CryptoStream(
    
    myStream,
    
    aes.CreateEncryptor(key, iv),
    
    CryptoStreamMode.Write);
    


    파일 스트림에 빠르게 쓰기 위해 StreamWriter를 만듭니다.

    StreamWriter sWriter = new StreamWriter(cryptStream);
    


    스트림에 쓰고 연결을 닫습니다.




    sWriter.WriteLine("Hello World!");
    
    sWriter.Close();cryptStream.Close();myStream.Close();
    


    완전한 코드



    비대칭 암호화란 무엇입니까?



    비대칭 암호화는 적은 수의 바이트에서 수행되므로 소량의 데이터에만 유용합니다.

    공개 키 초기화



    공개 키 정보에 대한 바이트 배열을 만듭니다.

    byte[] modulus = {214,46,220,83,160,73,40,39,201,155,19,202,3,11,191,178,56,
    
    74,90,36,248,103,18,144,170,163,145,87,54,61,34,220,222,
    
    207,137,149,173,14,92,120,206,222,158,28,40,24,30,16,175,
    
    108,128,35,230,118,40,121,113,125,216,130,11,24,90,48,194,
    
    240,105,44,76,34,57,249,228,125,80,38,9,136,29,117,207,139,
    
    168,181,85,137,126,10,126,242,120,247,121,8,100,12,201,171,
    
    38,226,193,180,190,117,177,87,143,242,213,11,44,180,113,93,
    
    106,99,179,68,175,211,164,116,64,148,226,254,172,147};
    
    byte[] exponent = { 1, 0, 1 };
    


    RSA 클래스 인스턴스 생성



    RSA 클래스의 새 인스턴스를 빌드합니다.

    RSA rsa = RSA.Create();
    


    RSA 매개변수 생성 및 키 가져오기



    아래와 같이 RSAParameters 구조의 새 인스턴스를 빌드하고 rsaKeyInfo를 공개 키 값으로 설정하고 키 매개변수를 RSA로 가져옵니다.

    RSAParameters rsaKeyInfo = new RSAParameters();rsaKeyInfo.Modulus = modulus;rsaKeyInfo.Exponent = exponent;
    
    rsa.ImportParameters(rsaKeyInfo);
    


    AES 클래스 및 암호화



    기본 Aes 구현 클래스의 새 인스턴스를 빌드하고 대칭 키와 IV를 암호화합니다.

    Aes aes = Aes.Create();
    
    encryptedKey = rsa.Encrypt(aes.Key, RSAEncryptionPadding.Pkcs1);
    
    encryptedIV = rsa.Encrypt(aes.IV, RSAEncryptionPadding.Pkcs1);
    


    완전한 코드



    읽어 주셔서 감사합니다. 글이 마음에 드셨으면 좋겠습니다..!!

    좋은 웹페이지 즐겨찾기