VB6으로 AES256 암호화를 하다가 보니 다른 언어로 개발된 프로그램과 통신할때 이런 저런 문제가 많이 나오네요.
그래서 발생했던 문제점 관련하여 내용을 정리해 보았습니다.
AES256 암호화시 중요 체크포인트
1. 암호화에 사용되는 키
2. 암호화에 사용되는 주요키 말고 IV라고 하는 키가 하나 더 있음
3. ChainingMode의 종류가 ECB, CBC, GCM 등 여러개가 있음
서로 다른 언어로 개발하여 암호화된 값을 프로토콜 전달하는 경우에는 위에 3가지가 맞아야합니다.
단 하나라도 틀리면 암호화되어 나온 결과값이 달라지게 됩니다.
그렇기 때문에 복호화를 해도 전혀 엉뚱한 값이 나오게 되고, 암호화된 값을 주고 받는 양쪽의 프로그램에서 같은 결과를 기대할 수 없게됩니다. 프로그램을 개발하실때 주의 하시기 바랍니다.
[C# AES256 암호화/복호화 샘플 코드 - ChainingModeCBC]
AES256 복호/암호화 하는 방법(C#)
C#에서 암호화 할시 php에서와 암호화 할시 다르게 나오는 경우가 있어 구글 검색 후 http://www.imcore.net/encrypt-decrypt-aes256-c-objective-ios-iphone-ipad-php-java-android-perl-javascript/ 참고 링크..
gods2000.tistory.com
c#에서는 CipherMode.CBC 라고 하네요. 표현방식이 다른듯합니다.
[JAVA AES256 암호화/복호화 샘플 코드 - ChainingModeCBC]
[JaVa] AES256 암호화 및 복호화
출처 : http://www.imcore.net/encrypt-decrypt-aes256-c-objective-ios-iphone-ipad-php-java-android-perl-javascript-python/ import java.secur...
freecatz.blogspot.com
자바의 패딩모드는 PKCS5 이고, C#의 PaddingMode는 PKCS7인데
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 프로그래밍 언어에서 암호화 및 복호화 하는 방법을 알아보았습니다.
유익한 정보가 되었길 바랍니다.
댓글