VB6으로 AES256 암호화를 하다가 보니 다른 언어로 개발된 프로그램과 통신할때 이런 저런 문제가 많이 나오네요.
그래서 발생했던 문제점 관련하여 내용을 정리해 보았습니다.
AES256 암호화시 중요 체크포인트
1. 암호화에 사용되는 키
2. 암호화에 사용되는 주요키 말고 IV라고 하는 키가 하나 더 있음
3. ChainingMode의 종류가 ECB, CBC, GCM 등 여러개가 있음
서로 다른 언어로 개발하여 암호화된 값을 프로토콜 전달하는 경우에는 위에 3가지가 맞아야합니다.
단 하나라도 틀리면 암호화되어 나온 결과값이 달라지게 됩니다.
그렇기 때문에 복호화를 해도 전혀 엉뚱한 값이 나오게 되고, 암호화된 값을 주고 받는 양쪽의 프로그램에서 같은 결과를 기대할 수 없게됩니다. 프로그램을 개발하실때 주의 하시기 바랍니다.
PKCS5나 PKCS7이나 서로 호환이 되는것 같습니다.
동일한 결과가 나오는 걸 제가 직접 확인했습니다.
[VB6 AES256 암호화/복호화 샘플 코드 - ChainingModeECB]
심플하게 잘 되어 있는 코드지만 단점이 하나 있다면, CBC 체이닝모드를 지원하지 않는다는 점입니다.
VB6에서 CBC 모드를 지원하는 샘플코드는 본적이 없고, 유료 DLL에서는 지원한다고 하는데, 역시나 유료로는 쓸 생각이 없기 때문에 찾다가 포기했습니다.
C#, JAVA, VB 프로그래밍 언어에서 암호화 및 복호화 하는 방법을 알아보았습니다.
유익한 정보가 되었길 바랍니다.
댓글