IT정보공유/C#

AES256 암호화, 복호화 주의사항 및 샘플 코드

알지오™ 2018. 10. 11.

VB6으로 AES256 암호화를 하다가 보니 다른 언어로 개발된 프로그램과 통신할때 이런 저런 문제가 많이 나오네요.

그래서 발생했던 문제점 관련하여 내용을 정리해 보았습니다.

 

AES256 암호화시 중요 체크포인트

1. 암호화에 사용되는 키
2. 암호화에 사용되는 주요키 말고 IV라고 하는 키가 하나 더 있음
3. ChainingMode의 종류가 ECB, CBC, GCM 등 여러개가 있음

서로 다른 언어로 개발하여 암호화된 값을 프로토콜 전달하는 경우에는 위에 3가지가 맞아야합니다. 
단 하나라도 틀리면 암호화되어 나온 결과값이 달라지게 됩니다.

 

그렇기 때문에 복호화를 해도 전혀 엉뚱한 값이 나오게 되고, 암호화된 값을 주고 받는 양쪽의 프로그램에서 같은 결과를 기대할 수 없게됩니다. 프로그램을 개발하실때 주의 하시기 바랍니다.

 

 

 

 

 

 

PKCS5나 PKCS7이나 서로 호환이 되는것 같습니다. 

동일한 결과가 나오는 걸 제가 직접 확인했습니다.

 

 

[VB6 AES256 암호화/복호화 샘플 코드 - ChainingModeECB]

<참조링크>

 

[VB6] Simple AES 256-bit password protected encryption-VBForums

May 2nd, 2018, 02:24 AM #1 [VB6] Simple AES 256-bit password protected encryption Simple AES 256-bit password protected encryption A single mdAesCtr.bas module contains an implementation of a simple to use AES 256-bit encryption/decryption in CTR mode, us

www.vbforums.com

심플하게 잘 되어 있는 코드지만 단점이 하나 있다면, CBC 체이닝모드를 지원하지 않는다는 점입니다.
VB6에서 CBC 모드를 지원하는 샘플코드는 본적이 없고, 유료 DLL에서는 지원한다고 하는데, 역시나 유료로는 쓸 생각이 없기 때문에 찾다가 포기했습니다.

C#, JAVA, VB 프로그래밍 언어에서 암호화 및 복호화 하는 방법을 알아보았습니다.
유익한 정보가 되었길 바랍니다. 

댓글

💲 추천 글