본문 바로가기
프로그래밍

c# TripleDES(DESede) ECB PKCS7 암호화/복호화 코드

by 도장깨기 2021. 5. 4.
728x90
반응형

오늘 소개할 코드는 TripleDES라는 암호화/복호화 로직인데요.

 

각 데이터 블록에  DES라는 데이터 암호화 알고리즘을 세번 적용한 방식이라고 하네요.

 

 

이러한 형태를 띄고 있다고 하는데요. 

 

보통 JAVA 코딩에서 많이 사용 되는 거 같아요.

 

이 알고리즘에 대해서는 자세하게는 파고 들지는 않을게요.

저도 이쪽 전문가는 아니라 ㅎㅎ

좀더 자세하게 알고 싶다면 아래 링크 참고해보세요!

 

http://wiki.hash.kr/index.php/%ED%8A%B8%EB%A6%AC%ED%94%8C_DES

 

트리플 DES - 해시넷

트리플 DES(Triple DES)는 각 데이터 블록에 데이터 암호화 알고리즘(DES)을 세번 적용한 트리플 데이터 암호화 알고리즘(TDEA 또는 트리플 DEA) 블록 암호에 대한 일반적인 이름이다.[1] 3DES 혹은 3중 DES

wiki.hash.kr

 

 

먼저 암호화 소스 부터 소개할게요!

 

암호화
		public string Encryption(string str, string key)
		{
			TripleDESCryptoServiceProvider Tripledes = new TripleDESCryptoServiceProvider();

			Tripledes.Mode = CipherMode.ECB;
			Tripledes.Padding = PaddingMode.PKCS7;

			byte[] b_input = Encoding.UTF8.GetBytes(str);
			byte[] b_key = Encoding.UTF8.GetBytes(key);		

			MemoryStream tempStream = new MemoryStream();
			CryptoStream encStream = new CryptoStream(tempStream, Tripledes.CreateEncryptor(b_key, b_key), CryptoStreamMode.Write);

			encStream.Write(b_input, 0, b_input.Length);
			encStream.Close();

			return Convert.ToBase64String(tempStream.ToArray());

		}

 

str에는 암호화할 텍스트를 넣어주고 key는 암호화 복호화에 사용될 Key를 설정해 주시면되요~

 

Key의 경우 서로 암호화 하고 복호화할때 중요하게 적용되기때문에 보안 유지가 잘되야 하겠죠.

 

저 같은 경우 

CiperMode는 ECB로 설정하였고,

Padding의 경우 PKCS7으로 설정하였어요.

 

 

 

복호화
		public string Decryption(string str, string key)
		{
			TripleDESCryptoServiceProvider Tripledes = new TripleDESCryptoServiceProvider();
			Tripledes.Mode = CipherMode.ECB;
			Tripledes.Padding = PaddingMode.PKCS7;
			byte[] b_input = Convert.FromBase64String(str);
			byte[] b_key = Encoding.UTF8.GetBytes(key);
			MemoryStream tempStream = new MemoryStream();
			
			CryptoStream encStream = new CryptoStream(tempStream, Tripledes.CreateDecryptor(b_key, b_key), CryptoStreamMode.Write);
			encStream.Write(b_input, 0, b_input.Length);
			encStream.FlushFinalBlock();
			return Encoding.UTF8.GetString(tempStream.ToArray());
		}

복호화도 마찬가지로 CiperMode랑 Padding을 설정해서 

복호화 하시면되요.

 

 

 

이렇게 오늘은 c# 코드를 이용해 TripleDES 암호화/복호화 코딩을 완료하였는데요.

질문 있으시다면 댓글로 남겨 주시면 답변 드리도록 하겠습니다!

감사합니다~

728x90
반응형

댓글