대칭 암호화와 비대칭 암호화
3420 단어 dotnetcsharpprogrammingsecurity
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);
완전한 코드
읽어 주셔서 감사합니다. 글이 마음에 드셨으면 좋겠습니다..!!
Reference
이 문제에 관하여(대칭 암호화와 비대칭 암호화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ssukhpinder/symmetric-v-s-asymmetric-encryption-nkn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)